some improvement, cleanup and 128 bit hash