added some generic types