When compiling a high level language like Java, Lisp or Smalltalk, the implementation of primitive data types is a large part of the task. The powerful data types make most of the virtual machine, and code generation for them must be rewritten if any of the specifications of the data types change. Moreover, most of the differences between different implementations of the same data types are in the format of their representations. By describing format and semantics separately we can create more modular and reusable specifications, and therefore more modular and reusable interfaces with the back-end of the compiler. This paper presents a model for specifying data type implementations in a compiler, and a prototype system that was built following that model. This system automatically generates a compiler component from the specifications of a data type, assuring consistency between implementation and specification. The system also provides a visual interface to inspect and specify data type formats.