refactoring and delete
merge