added more generics