geocoder refactoring and tests