More optmizations...now about twice as fast