Further optimizations, move to multiprocess... still needs comparitive testing