refactoring.  not complete but check in to share.
updated transaction.void call