Design Patterns written in Scala