transaction ctor