Explorations in Object-Oriented Design