added transaction support
+ added transaction support
@ change some member to include __ denoting intended non-public access