added hastable implementation