keep generic types