transaction needs to be initialized with nullptr