should the transaction be started here or in the calling function?