prepare to refactor