Starting HUGE refactoring