provide accessors and constructors