refactoring
merged refactor