hook generics