When were done with all the significant changes to our API, we should look at whether it would be more appropriate to past &mut self where we currently use &self. On one hand we don't need the mutability. On the other hand the mutability would make caching dependency providers easier to implement.