Design Patterns and OOP in JavaScript - Exercises 7 to 12