begin the great refactoring