added locationService and supporting classes