refactor & merge