Another solution is the circuit below, which can be found here. It has also been discussed in Stackexchange before.
I'm just not certain what the advantages and disadvantages are when using this circuit compared with the circuit provided by CarpetPython.
Maybe somebody could clarify this?