Design Patterns assignment 3