more generic types