@philvarner - I started this project trying to write it as functional-oriented as possible, but there's so much duplicated code where the session, errors, warnings, etc. are passed to every method. A better approach would be to put everything in a class and access those as self.