the design pattern but also to explore powerful and flexible Scala language features.