Refactor

merge refactor