added transaction wrapper