Implement Generics type system