introduced some generics