refactor + references