Enforce generic types