dependency refactor
scopes rebind refactor