use uint32 hashes for keys (perf improv)
don't create unnecessary arrays
minor cleanup
improve benchmarks a bit