Uses shared memory, minor speedup