I have a feeling that issues like #146 (which feel quite fundamental) would be solved much better if we had a more transaction-like interface.