working ctor