large refactor - squash this description later
get working on dependency provider example