Switched custom constructors over to internal to simplify API for external callers