diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js
index 312a61ad8d4d862baf927c2b0abee1405d8dc623..abd4552f0930472cc6164340f990b8b922f72766 100644
--- a/packages/component-manuscript/src/components/ManuscriptLayout.js
+++ b/packages/component-manuscript/src/components/ManuscriptLayout.js
@@ -20,8 +20,8 @@ import {
 } from './'
 
 const ManuscriptLayout = ({
-  project,
-  version,
+  project = {},
+  version = {},
   journal,
   history,
   currentUser,
diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js
index 61760e51a03f6a48854781d3dd509e0a2201ebea..3e6aff553af19936e6e943f7aabd9c70ceceb79c 100644
--- a/packages/component-manuscript/src/components/ManuscriptPage.js
+++ b/packages/component-manuscript/src/components/ManuscriptPage.js
@@ -45,6 +45,7 @@ export default compose(
       replace,
       updateVersion: actions.updateFragment,
       getSignedUrl,
+      getCollection: actions.getCollection,
     },
   ),
   ConnectPage(({ currentUser, handlingEditors, project }) => {
@@ -64,18 +65,6 @@ export default compose(
         id: version.id,
         ...data,
       }),
-    downloadFile: ({ getSignedUrl }) => (fileId, fileName) => e => {
-      e.preventDefault()
-      getSignedUrl(fileId).then(({ signedUrl }) => {
-        const a = document.createElement('a')
-        a.href = `${signedUrl}`
-        a.download = fileName
-        a.target = '_blank'
-        document.body.appendChild(a)
-        a.click()
-        document.body.removeChild(a)
-      })
-    },
     setEditorInChief: ({ setEiC }) => eic => {
       if (eic) {
         const { firstName = '', lastName = '' } = eic
@@ -104,14 +93,15 @@ export default compose(
         location,
         match,
         setEditorInChief,
+        getCollection,
       } = this.props
       const collectionId = match.params.project
       const { agree, invitationId } = parseSearchParams(location.search)
       if (agree === 'true') {
         replace(location.pathname)
-        reviewerDecision(invitationId, collectionId, true).catch(
-          redirectToError(replace),
-        )
+        reviewerDecision(invitationId, collectionId, true)
+          .then(() => getCollection({ id: match.params.project }))
+          .catch(redirectToError(replace))
       }
 
       apiGet(`/users?editorInChief=true`).then(res =>
diff --git a/packages/component-manuscript/src/components/ManuscriptVersion.js b/packages/component-manuscript/src/components/ManuscriptVersion.js
index 2ecebdcd8a4a4804f89d632273270a9233a4e353..780b31916503239e0af3d5ed3de1313acab30d7c 100644
--- a/packages/component-manuscript/src/components/ManuscriptVersion.js
+++ b/packages/component-manuscript/src/components/ManuscriptVersion.js
@@ -8,20 +8,21 @@ import { withRouter } from 'react-router-dom'
 
 import { parseVersionOptions } from './utils'
 
-const ManuscriptVersion = ({ project, fragments = [], history, match }) => (
-  <Menu
-    inline
-    onChange={v =>
-      history.push(`/projects/${project.id}/versions/${v}/details`)
-    }
-    options={parseVersionOptions(fragments)}
-    value={get(match, 'params.version')}
-  />
-)
+const ManuscriptVersion = ({ project = {}, fragments = [], history, match }) =>
+  !!fragments.length && (
+    <Menu
+      inline
+      onChange={v =>
+        history.push(`/projects/${project.id}/versions/${v}/details`)
+      }
+      options={parseVersionOptions(fragments)}
+      value={get(match, 'params.version')}
+    />
+  )
 
 export default compose(
   withRouter,
   connect((state, { project }) => ({
-    fragments: selectFragments(state, project.fragments),
+    fragments: selectFragments(state, get(project, 'fragments') || []),
   })),
 )(ManuscriptVersion)
diff --git a/packages/component-manuscript/src/components/ReviewReportCard.js b/packages/component-manuscript/src/components/ReviewReportCard.js
index 077c7da4c98ab3e5ca643e18c85e89cce4b7b887..71bc110df77832e214239c8ecbcc59f722e6a37c 100644
--- a/packages/component-manuscript/src/components/ReviewReportCard.js
+++ b/packages/component-manuscript/src/components/ReviewReportCard.js
@@ -1,5 +1,6 @@
 import React, { Fragment } from 'react'
 import moment from 'moment'
+import { get } from 'lodash'
 import { th } from '@pubsweet/ui'
 import { compose } from 'recompose'
 import { withJournal } from 'xpub-journal'
@@ -21,24 +22,41 @@ const ReviewReportCard = ({ report = {}, journal: { recommendations } }) => (
         {recommendations.find(r => report.recommendation === r.value).label}
       </Text>
     </Row>
-    <Spacing />
-    <Row left>
-      <Label>Report Text</Label>
-    </Row>
-    <Row>
-      <Text>{report.comments[0].content}</Text>
-    </Row>
-    <Spacing />
-
-    {!!report.comments[0].files.length && (
+    {get(report, 'comments[0].content') && (
       <Fragment>
+        <Spacing />
         <Row left>
-          <Label>Files</Label>
+          <Label>Report Text</Label>
+        </Row>
+        <Row>
+          <Text>{report.comments[0].content}</Text>
         </Row>
+      </Fragment>
+    )}
+
+    {get(report, 'comments[0].content.files') &&
+      !!report.comments[0].files.length && (
+        <Fragment>
+          <Spacing />
+          <Row left>
+            <Label>Files</Label>
+          </Row>
+          <Row left>
+            {report.comments[0].files.map(file => (
+              <FileItem compact id={file.id} key={file.id} {...file} />
+            ))}
+          </Row>
+        </Fragment>
+      )}
+
+    {get(report, 'comments[1].content') && (
+      <Fragment>
+        <Spacing />
         <Row left>
-          {report.comments[0].files.map(file => (
-            <FileItem compact id={file.id} key={file.id} {...file} />
-          ))}
+          <Label>Confidential Note</Label>
+        </Row>
+        <Row>
+          <Text>{report.comments[1].content}</Text>
         </Row>
       </Fragment>
     )}
diff --git a/packages/component-manuscript/src/components/ReviewerReportForm.js b/packages/component-manuscript/src/components/ReviewerReportForm.js
index 547c85f9fb2ddb6ac37f8a41a31ca8797d25363f..f96a96bad5c954274e52a434dc843725bd6669c0 100644
--- a/packages/component-manuscript/src/components/ReviewerReportForm.js
+++ b/packages/component-manuscript/src/components/ReviewerReportForm.js
@@ -235,10 +235,7 @@ export default compose(
         .then(file => {
           const files = formValues.files || []
           const newFiles = [...files, file]
-
-          setTimeout(() => {
-            changeForm('reviewerReport', 'files', newFiles)
-          }, 1000)
+          changeForm('reviewerReport', 'files', newFiles)
         })
         .catch(e => console.error(`Couldn't upload file.`, e))
     },
diff --git a/packages/component-manuscript/src/components/utils.js b/packages/component-manuscript/src/components/utils.js
index 0ffd247ad00e55e06063eba4a0919b95ab582e2e..6ef3a6061c0a96982331d975850f958f9d136e9f 100644
--- a/packages/component-manuscript/src/components/utils.js
+++ b/packages/component-manuscript/src/components/utils.js
@@ -69,7 +69,7 @@ export const parseSearchParams = url => {
   return parsedObject
 }
 
-export const parseVersionOptions = fragments =>
+export const parseVersionOptions = (fragments = []) =>
   fragments.map(f => ({
     value: f.id,
     label: `Version ${f.version} - updated on ${moment(f.submitted).format(