prepare for refactor!