use -Wall and abuse Applicatives!