prepare for refactor