renaming
major refactoring, rough
method tests and fixing refactor bugs