General Purpose Quantum Computing