fixed the concurrency issue (I should really document this)
the transaction wrapper works, both in tests and with the actual application