We have elsewhere described an early version of Fred that did not support many of the features described here. In this paper we will describe the mechanisms for module description and measurement that Fred supports, why we chose those mechanisms as important, and how those mechanisms change the way hardware is described and manipulated. In the next section we review objectoriented programming. In Section I11 we review Fred’s contributions and illustrate their use in CAD programs. Section IV describes how to extend class and inheritance to hardware modules. Section V describes Fred’s facilities for measuring modules and how to implement measurement systems that allow black box modeling. In Section VI we describe how to design an efficient consistencymaintenance mechanism for modules. Finally, in Section VI1 we compare our techniques to others developed for hardware description and CAD tool building.