refactor latest merge