commonize ScriptableObjectFactory