Refactoring begun. TODO junit.