Fix race condition, clean up, add updateLocation() feature.