reinterpretation of the original Gang of Four design patterns in terms of Scala and its