add generics