Adoption of a scientific approach to language design, featuring the identification of language design with programming, leads to the advocacy of an explicitly hierarchical approach to language development. Choice of the lambda-calculus as basis of the linguistic hierarchy is determined when "elegance" is the predominant criterion for assessing the quality of designs. The consequence is that the hierarchy is primarily comprised of a family of untyped functional languages. We embark upon the hierarchical development of a quality data type system for such languages, including a powerful mechanism for generic data abstraction, in five stages. We show that the expressiveness of the system, in comparison with the widespread "polymorphic" typing approach, is well worth the price of the necessarily dynamic checking for type conformance.