Large amount of refactoring, and adding many access modifiers.