major refactoring to separate functionality into more modular units of code