added generics and generates