[~] Huge refactoring