added exception handling, validation of returned data, and generalised the usage from lat/lon to location