complete refactor of each exposed method to its own file and test file