add geo to factory function