Using separate ResolveTimeContainer

Separating out actual resolve logic into separate nested class.
This lets us have a place to put the resolve-time state without
contaminating the factory methods with parameters that most of
them don't need to know about.