Eliminate mutation of Dependency objects
Cache and reuse Dependency objects