Implementation of several Design Patterns