Can we punt on this now? I'll add a TODO. I don't know the best cache trait right now. I made the constructor private so we can easily support something better by adding more constructors to the object.

Sound okay?