One thing I can't figure out is why they need to be cloact/atoms and not just regular atoms. Is it because cloact/atoms are observable?
You could still use regular atoms, though, with some extend-type magic. But then you risk messing with non-Cloact code in horrible ways...