start adding support for generic types