Performed tons of refactoring. New classes to organize code.