transaction building reimplemented