Chapter 11/12 of the Golang book; I tend to gravitate towards functional style, but it's probably wrong in these languages