         }
     }
     
+    // true of the logged in user has saved at least one location item
     func loggedInUserDoesHaveLocation() -> Bool {
         if let identity = currentUser?.studentKey {
             return infoPool.infoExistsForGroup(identity)

            return infoPool.count() > 1 ? infoPool.lastInfoItem()?.updatedAt : nil
        }
        
        onTheMapClient.fetchStudents(limit: fetchLimit, newerThan: newestDate, olderThan: oldestDate) {
            students, error in
            if let newLocations = students {
                dispatch_async(dispatch_get_main_queue()) {
                    // manipulate the data store on the main thread
                    self.infoPool.storeInfoItems(newLocations)
                    dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
                        // but we don't know how expensive the completion handler is, so put it on off the main thread
                        Logger.info("found \(newLocations.count) items")
                        completionHandler(success: true, error: nil)
                    }

    parseData = putValue(udacityData[UdacityService.UdacityJsonKey.Lastname], intoDictionary: parseData, forKey: OnTheMapParseService.ParseJsonKey.Lastname)
    
    var studentInformation = StudentInformation(parseData: parseData)

    if let emailBlock = udacityData[UdacityService.UdacityJsonKey.Email] as? [String:AnyObject],
        emailAddress = emailBlock[UdacityService.UdacityJsonKey.Address] as? String {
        studentInformation?.email = emailAddress
    }
    
