includes code and examples from "Scala for the Impatient"