Design Patterns final project