In one sense, objects have simply taken this notion of the ADT and expanded it beyound the application to simple data structures. That is, objects are characterized by the service they provide, not by the way they provide this service. Seen in this light, we can identify three eons in the short history of programming languages. Assembly languages and functions were important when the task of programming was centered on the functionality of an application. The move to modules and ADTs was symptomatic of a move to a more data centered view of programming, the identifcation of data structures the defining aspects of a program. In Objects we now take a third step; instead of a function or data centered view of programming, the major keystone of the Object-oriented mindset is the service centered view of computing; elements of a program are characterized by the services they provide, independent of the way that they go about providing that service.