dropped protected status from getFactory()