OOP Design Patterns revisited