I like most of those decisions, but they aren't functional programming