a lot more refactoring, although some methods are very complicated and nuanced, and there is some overlap in code that could be consolidated