Putting together all the pieces of the object-oriented puzzle