provides full(er?) support for transactions