it defaults if the factory returns null