We propose a conservative extension of the polymorphic lambda calculus (A5B ) as an intermediate language for compiling languages with name-based class and interface hierarchies. Our extension enriches standard A B with recursive types, existential types, and row polymorphism, but only ordered records with no subtyping. Basing our language on A B makes it also a suitable target for translation from other higher-order languages; this enables the safe interoperation between class-based and higher-order languages and the reuse of common type-directed optimization techniques, compiler back ends, and runtime support. We present the formal semantics of our intermediate language and illustrate its features by providing a formal translation from a subset of Java, including classes, interfaces, and private instance variables. The translation preserves the name-based hierarchical relation between Java classes and interfaces, and allows access to private instance variables of parameters of the s...