Added hash abstractions

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>