Refactor BackgroundGeo as Factory