Scala design patterns. (2018)