added timing for testing, initial tests show 4x the speed