typecheck fixing
more generics
more generics