time to roll this into an actual transactions interface; using the transaction-only types in general is getting _really_ clunky