Major refactor and method renaming