moved specialized hash funcs