Version 4: programmatic transactions, exceptions.