Add transaction wrapper
Add tests