using generics in the metamodel