public Object fillBackingObject(Object incomingModel, Map request, Map session, Map application)
      throws Exception {
    PresentationManager presentationManager = getPresentationManager();
    Presentation presentation = (Presentation) incomingModel;
    if (presentation.getSecretExportKey() != null) {
      String secretExportKey = presentation.getSecretExportKey();
      presentation = presentationManager.getPresentation(presentation.getId(), secretExportKey);
      presentation.setSecretExportKey(secretExportKey);
      return presentation;
    } else {
      // if it exists, get the presentation from memory that is being edited
      Presentation previewPres = (Presentation) session.get("presentation");
      if (previewPres != null
          && previewPres.getId().getValue().equals(presentation.getId().getValue())) {

        // side step any authz issues as the presentation only exists in the users session
        previewPres.setIsPublic(true);
        previewPres.setIsPreview(true);

        return previewPres;
      }

      return getPresentationManager().getLightweightPresentation(presentation.getId());
    }
  }