First pass at an OO wrapper

What to do with an instance that later gets `chain` called on it. Should there be some way to unchain past a certain point to freeze the object's internal state? If so, would that be in `value` or a new `unchain`?