Hunt, John, "Scala design patterns: Patterns for practical reuse and design", , 2013