improve initial timezone-based geolocation, and move geolocation code to
a separate file