refactored
merged