Chapter 3 in Scala in Depth.