based on http://quantum-bits.org/?page_id=3