public CurrentPage setCurrentDocumentAndKeyAndOffset(
      Book currentBook, Key key, float yOffsetRatio) {
    PassageChangeMediator.getInstance().onBeforeCurrentPageChanged();

    CurrentPage nextPage = getBookPage(currentBook);
    if (nextPage != null) {
      try {
        nextPage.setInhibitChangeNotifications(true);
        nextPage.setCurrentDocument(currentBook);
        nextPage.setKey(key);
        nextPage.setCurrentYOffsetRatio(yOffsetRatio);
        currentDisplayedPage = nextPage;
      } finally {
        nextPage.setInhibitChangeNotifications(false);
      }
    }
    // valid key has been set so do not need to show a key chooser therefore just update main view
    PassageChangeMediator.getInstance().onCurrentPageChanged();

    return nextPage;
  }