add some generics