Adding an abstraction for transactions