I don't think you want the calling context thing. I've been trying to figure out how I would use your proposed API and all it's doing is confusing me.
Grandfather said it right.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?