private void beginConversion() {
   final Serializable imageId = getImageId();
   final Handler thumbnailHandler =
       new Handler() {
         @Override
         public void handleMessage(Message result) {
           final ImageConverter converter;
           synchronized (ImageSource.this) {
             converter = conversionJob;
             conversionJob = null;
           }
           final Throwable status = converter.getStatus();
           if (null != status) {
             String msg = context.getResources().getString(R.string.image_load_error);
             Log.e(LOG_TAG, msg, status);
             context.alert(msg);
           } else {
             Bitmap thumbnail = converter.getBitmap();
             synchronized (ImageSource.this) {
               setThumbnailCache(thumbnail);
               if (null != frame) {
                 frame.removeAllViews();
                 showThumbnail(thumbnail);
               }
             }
           }
         }
       };
   final ImageConverter converter = new ImageConverter(context, thumbnailHandler);
   converter.setImageId(imageId);
   converter.setMaxFrameDimension(getMaxThumbnailSize());
   this.conversionJob = converter;
   context.submitBackgroundTask(converter);
 }