make factory public; allow config to disable auto behavior