move transaction-logic to service