@Override
  public void citySelected(City city) {
    // update user profile!
    MyCredentials.Me.getProfile().setCity_id(city.getId());
    final CustomAsyncTask asyncTask = new CustomAsyncTask(this);
    asyncTask.setTaskCallBacks(
        new TaskCallBacks() {
          @Override
          public String doInBackground() {
            TMultiplexedProtocol mp = null;
            try {
              mp = asyncTask.openTransport(SuperAsyncTask.SERVICE_USER);
              UserSvc.Client client = new UserSvc.Client(mp);
              client.setProfile(myCredentials.getToken(), MyCredentials.Me.getProfile());
            } catch (Exception e) {
              e.printStackTrace();
            }
            return null;
          }

          @Override
          public void onPreExecute() {}

          @Override
          public void onPostExecute() {
            loadingView.stopAnimation();
            startMainActivity();
          }
        });
    asyncTask.execute();
  }
  @Override
  public void onFinish() {
    if (MyCredentials.Me == null) {
      // this can only happen, if user is not connected to the internet:
      msg_txt.setText(getResources().getString(R.string.no_connection));
      retry_btn.setVisibility(View.VISIBLE);
      retry_btn.setActivated(true);
      return;
    }
    LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
    if (!service.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
      msg_txt.setText(getResources().getString(R.string.no_location));
      retry_btn.setVisibility(View.VISIBLE);
      retry_btn.setActivated(true);
      return;
    }

    if (loadingView != null) loadingView.stopAnimation();

    if (MyCredentials.Me.getProfile() != null
        && MyCredentials.Me.getProfile().getCity_id() != null) {
      Uri data = getIntent().getData();
      if (data != null) {
        List<String> params = data.getPathSegments();
        Intent intent = new Intent(this, TabActivity.class);
        intent.putExtra("USER", params.get(params.size() - 1));
        startActivity(intent);
      } else {
        startMainActivity();
      }
    } else {
      if (loadingView != null) loadingView.startAnimation();
      Log.i("Entry", "no city for user exists");
      getFragmentManager()
          .beginTransaction()
          .replace(R.id.select_city_container, new SelectCityFragment())
          .commit();
    }
  }