Complete refactoring again