Would be good to have a smattering of enums, pattern matching and generics too.