Concepts of Program by Design using Scala