diff --git a/packages/component-faraday-ui/src/ReviewersTable.js b/packages/component-faraday-ui/src/ReviewersTable.js
index 74ddafc17049e76ed80fcc5b799f1f9091c1bec9..4da6d58f7f350ba5b3e773b33a1f3429e033c379 100644
--- a/packages/component-faraday-ui/src/ReviewersTable.js
+++ b/packages/component-faraday-ui/src/ReviewersTable.js
@@ -65,7 +65,9 @@ const ReviewersTable = ({
               </Fragment>
             </td>
             <td>
-              <div />
+              <DateParser timestamp={get(invitation, 'review.submittedOn')}>
+                {timestamp => <Text>{timestamp}</Text>}
+              </DateParser>
             </td>
             <HiddenCell>
               {!invitation.hasAnswer && (
diff --git a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
index 7cf367f7ec049a39afbd533ea780e74b9182e7e7..c9f0c279bd83899b6ee723a859cb6529420df9b7 100644
--- a/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
+++ b/packages/component-faraday-ui/src/contextualBoxes/ReviewerDetails.js
@@ -1,5 +1,6 @@
 import React, { Fragment } from 'react'
 import { H4 } from '@pubsweet/ui'
+import { withProps } from 'recompose'
 import styled from 'styled-components'
 import { th } from '@pubsweet/ui-toolkit'
 
@@ -56,7 +57,12 @@ const ReviewerDetails = ({
   </ContextualBox>
 )
 
-export default ReviewerDetails
+export default withProps(({ invitations, reviewerReports = [] }) => ({
+  invitations: invitations.map(i => ({
+    ...i,
+    review: reviewerReports.find(r => r.userId === i.userId),
+  })),
+}))(ReviewerDetails)
 
 // #region styles
 const TabButton = styled.div`
diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js
index e2120d3ed8315076974e405222466827665af831..a6f66d3736b655bb1835539cd73115feac761ceb 100644
--- a/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js
+++ b/packages/component-faraday-ui/src/manuscriptDetails/ManuscriptEicDecision.js
@@ -1,16 +1,25 @@
 import React from 'react'
-import { has, get } from 'lodash'
+import { get } from 'lodash'
+import { compose } from 'recompose'
 import styled from 'styled-components'
 import { reduxForm } from 'redux-form'
 import { th } from '@pubsweet/ui-toolkit'
 import { required } from 'xpub-validators'
-import { compose, withProps } from 'recompose'
 import { Button, Menu, ValidatedField } from '@pubsweet/ui'
+import { withModal } from 'pubsweet-component-modal/src/components'
 
-import { ContextualBox, OpenModal, Row, Item, Label, Textarea } from '../'
+import {
+  Row,
+  Item,
+  Label,
+  Textarea,
+  MultiAction,
+  ContextualBox,
+  ItemOverrideAlert,
+  withFetching,
+} from '../'
 
 const ManuscriptEicDecision = ({
-  disabled,
   isFetching,
   formValues,
   handleSubmit,
@@ -21,17 +30,17 @@ const ManuscriptEicDecision = ({
   <ContextualBox label="Your Editorial Decision" {...rest}>
     <Root>
       <Row justify="flex-start">
-        <Item flex={0} vertical>
+        <ItemOverrideAlert flex={0} vertical>
           <Label required>Decision</Label>
           <ValidatedField
-            component={input => <CustomMenu {...input} options={options} />}
+            component={input => <Menu {...input} options={options} />}
             name="decision"
             validate={[required]}
           />
-        </Item>
+        </ItemOverrideAlert>
       </Row>
 
-      <Row mt={6}>
+      <Row mt={2}>
         <Item vertical>
           <Label required>
             {
@@ -49,37 +58,34 @@ const ManuscriptEicDecision = ({
       </Row>
 
       <Row justify="flex-end" mt={4}>
-        <OpenModal
-          isFetching={isFetching}
-          onConfirm={props => {
-            handleSubmit()(props)
-          }}
-          title="Are you sure you want to submit this decision?"
-        >
-          {showModal => (
-            <Button
-              disabled={disabled}
-              onClick={showModal}
-              primary
-              size="medium"
-            >
-              SUBMIT DECISION
-            </Button>
-          )}
-        </OpenModal>
+        <Button onClick={handleSubmit} primary size="medium">
+          SUBMIT DECISION
+        </Button>
       </Row>
     </Root>
   </ContextualBox>
 )
 
 export default compose(
-  withProps(({ formValues }) => ({
-    disabled: !has(formValues, 'decision') || !has(formValues, 'message'),
+  withFetching,
+  withModal(({ isFetching }) => ({
+    isFetching,
+    modalKey: 'eic-decision',
+    modalComponent: MultiAction,
   })),
   reduxForm({
     form: 'eic-decision',
-    onSubmit: (values, dispatch, { submitDecision }) => modalProps => {
-      submitDecision(values, modalProps)
+    onSubmit: (
+      values,
+      dispatch,
+      { submitDecision, showModal, setFetching },
+    ) => {
+      showModal({
+        title: 'Are you sure you want to submit this decision?',
+        onConfirm: modalProps => {
+          submitDecision(values, { ...modalProps, setFetching })
+        },
+      })
     },
   }),
 )(ManuscriptEicDecision)
@@ -91,10 +97,6 @@ const Root = styled.div`
   padding: ${th('gridUnit')};
 `
 
-const CustomMenu = styled(Menu)`
-  min-width: calc(${th('gridUnit')} * 30);
-`
-
 const ValidatedTextArea = styled(Textarea)`
   & + div {
     margin-top: 0;
diff --git a/packages/component-faraday-ui/src/manuscriptDetails/ResponseToInvitation.js b/packages/component-faraday-ui/src/manuscriptDetails/ResponseToInvitation.js
index b0f85ce73dad5312410b2161fadd3469497f691e..5ce45b9d80316f2f12aaa94a49acca64d588cbe8 100644
--- a/packages/component-faraday-ui/src/manuscriptDetails/ResponseToInvitation.js
+++ b/packages/component-faraday-ui/src/manuscriptDetails/ResponseToInvitation.js
@@ -90,7 +90,6 @@ export default compose(
   })),
   reduxForm({
     form: 'answer-invitation',
-    destroyOnUnmount: false,
     onSubmit: (values, dispatch, { showModal, onResponse, setFetching }) => {
       showModal({
         title: `${capitalize(values.decision)} this invitation?`,
diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js
index a33f986d60e6d92505444b1aa0fecaa748a3fdf6..68a4037b958131e24639a0c2289ec041f8d4d897 100644
--- a/packages/component-manuscript/src/components/ManuscriptLayout.js
+++ b/packages/component-manuscript/src/components/ManuscriptLayout.js
@@ -59,9 +59,9 @@ const ManuscriptLayout = ({
   pendingOwnRecommendation,
   toggleReviewerRecommendations,
   reviewerRecommendationExpanded,
-  //
   shouldReview,
   submittedOwnRecommendation,
+  reviewerReports,
 }) => (
   <Root pb={1}>
     {!isEmpty(collection) && !isEmpty(fragment) ? (
@@ -169,6 +169,7 @@ const ManuscriptLayout = ({
             onInviteReviewer={onInviteReviewer}
             onResendReviewerInvite={onResendReviewerInvite}
             onRevokeReviewerInvite={onRevokeReviewerInvite}
+            reviewerReports={reviewerReports}
           />
         )}
       </Fragment>
diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js
index 8c1dccd2742b8d97fb40b80294e6ee0acc192b92..7c2839e5966a45b40b6d210f8aef301e014403ea 100644
--- a/packages/component-manuscript/src/components/ManuscriptPage.js
+++ b/packages/component-manuscript/src/components/ManuscriptPage.js
@@ -64,6 +64,7 @@ import {
 import {
   createRecommendation,
   recommendationsFetching,
+  selectReviewRecommendations,
 } from '../redux/recommendations'
 
 export default compose(
@@ -86,6 +87,7 @@ export default compose(
         state,
         selectCollection(state, match.params.project),
       ),
+      reviewerReports: selectReviewRecommendations(state, match.params.version),
       pendingHEInvitation: pendingHEInvitation(state, match.params.project),
       pendingOwnRecommendation: getOwnPendingRecommendation(
         state,
@@ -112,7 +114,6 @@ export default compose(
       changeForm,
       clearCustomError,
       assignHandlingEditor,
-      createRecommendation,
       revokeHandlingEditor,
       getUsers: actions.getUsers,
       getFragment: actions.getFragment,
@@ -229,19 +230,23 @@ export default compose(
       fragment,
       collection,
       fetchUpdatedCollection,
-      createRecommendation,
     }) => (values, modalProps) => {
       const recommendation = parseEicDecision(values)
+      modalProps.setFetching(true)
       createRecommendation({
         recommendation,
         fragmentId: fragment.id,
         collectionId: collection.id,
       })
         .then(() => {
-          fetchUpdatedCollection()
+          modalProps.setFetching(false)
           modalProps.hideModal()
+          fetchUpdatedCollection()
+        })
+        .catch(err => {
+          modalProps.setFetching(false)
+          handleError(modalProps.setModalError)(err)
         })
-        .catch(handleError(modalProps.setModalError))
     },
     onHEResponse: ({
       history,