I'd like to keep it flexible. for example, the caller has control over the cacher/table scopes. this way the caller can choose to have one cacher/table per client, a global one, etc...