add geolocation logic