updating convenience constructors so they can be subclassed