add transaction DSL