Add snapshot method and override toString
Get rid of transaction id. Has no purpose.
Make less likely to fail.
Make transactional behavior reuseable.
docs