Refactoring

Is it mergeable now?