add hash func
add hash unit test