@Override
  public void save(final boolean done) {
    storyService.updateStory(
        editedStorySummary.getStory(),
        new ResponseHandlerLoader<DatumResponse<Story>>() {
          @Override
          public void handleSuccess(DatumResponse<Story> result) {
            fetchStorySummary(
                new AsyncCallback<DatumResponse<StorySummary>>() {
                  @Override
                  public void onFailure(Throwable caught) {
                    getView().saveFailed();
                  }

                  @Override
                  public void onSuccess(DatumResponse<StorySummary> result) {
                    getView().saveSuccess(done);
                    messageDispatcher.displayMessage(MessageStyle.SUCCESS, labels.storySaved());
                  }
                });
          }

          @Override
          public void onFailure(Throwable e) {
            super.onFailure(e);

            getView().saveFailed();
          }
        });
  }
 @Override
 public void edit() {
   isEditMode = true;
   storyService.getStorySummary(
       storySummary.getStoryId(),
       new ResponseHandlerLoader<DatumResponse<StorySummary>>() {
         @Override
         public void handleSuccess(DatumResponse<StorySummary> result) {
           doEdit(result.getDatum());
         }
       });
 }
  private void fetchStorySummary(final AsyncCallback<DatumResponse<StorySummary>> callback) {
    storyService.getStorySummary(
        storySummary.getStoryId(),
        new ResponseHandlerLoader<DatumResponse<StorySummary>>() {
          @Override
          public void handleSuccess(DatumResponse<StorySummary> result) {
            storySummary = result.getDatum();
            onStorySummaryFetched();

            if (callback != null) {
              callback.onSuccess(result);
            }
          }

          @Override
          public void onFailure(Throwable e) {
            super.onFailure(e);

            if (callback != null) {
              callback.onFailure(e);
            }
          }
        });
  }