@Override
 protected void onHandleIntent(Intent intent) {
   // Fetch data passed into the intent on start
   if (user == null) {
     user = ((User) intent.getSerializableExtra("user")).rebuild();
     if (user.getRideId() != null) {
       ride = fetchRide(user.getRideId());
     }
   }
   User newUser = fetchUser(user.getLoginUserId());
   Ride newRide = null;
   if (newUser != null) {
     if (newUser.getRideId() != null) {
       newRide = fetchRide(newUser.getRideId());
       if (ride == null) {
         ride = newRide;
       }
     }
     String userStatusChanged = getUserStatusChangeString(newUser);
     boolean hasRiderChanged = hasRiderChanged(newRide);
     if (userStatusChanged != null || hasRiderChanged) {
       // Construct an Intent tying it to the ACTION (arbitrary event namespace)
       String message = null;
       if (userStatusChanged != null) {
         message = "Your ride request has been " + userStatusChanged;
       } else {
         message = "You either have a new rider request or a rider has dropped out";
       }
       broadcast(message, userStatusChanged);
     }
     user = newUser;
     ride = newRide;
   }
 }