refactoring; merging original and new