dependency refactor