private void executeFullPictureUpload(final PhotoUploadDTO dto) {
    final long start = System.currentTimeMillis();
    Log.d(LOG, "*** executeFullPictureUpload, path: " + dto.getImageFilePath());
    dto.setFullPicture(true);
    PictureUtil.uploadImage(
        dto,
        true,
        getApplicationContext(),
        new PhotoUploadDTO.PhotoUploadedListener() {
          @Override
          public void onPhotoUploaded() {
            long end = System.currentTimeMillis();
            Log.i(LOG, "---- full picture uploaded, elapsed: " + (end - start) + " ms");
            dto.setDateFullPictureUploaded(new Date());
            saveCache();
            index++;
            controlFullPictureUploads();
          }

          @Override
          public void onPhotoUploadFailed() {
            Log.e(LOG, "------<< onPhotoUploadFailed - check and tell someone");
          }
        });
  }
  private void executeThumbUpload(final PhotoUploadDTO dto) {
    Log.d(LOG, "*** executeThumbUpload, file: " + dto.getThumbFilePath());
    dto.setFullPicture(false);
    // TODO - remove
    if (dto.getPictureType() == 0) dto.setPictureType(PhotoUploadDTO.PROJECT_IMAGE);
    final long start = System.currentTimeMillis();
    PictureUtil.uploadImage(
        dto,
        false,
        getApplicationContext(),
        new PhotoUploadDTO.PhotoUploadedListener() {
          @Override
          public void onPhotoUploaded() {
            long end = System.currentTimeMillis();
            Log.i(LOG, "---- thumbnail uploaded, elapsed: " + (end - start) + " ms");
            dto.setDateThumbUploaded(new Date());
            saveCache();
            index++;
            controlThumbUploads();
          }

          @Override
          public void onPhotoUploadFailed() {
            Log.e(LOG, "------<< onPhotoUploadFailed - check and tell someone");
          }
        });
  }