I love the way functional programming makes my head hurt