support positional constructors