Initial refactoring merge