Started using cython to get the most out of the bit shifting optimization, improved benchmark script, added setup.py for cython related things