diff --git a/packages/component-manuscript/src/atoms/index.js b/packages/component-manuscript/src/atoms/index.js
index af47591164adbddb4a11b8bb511c14a6905e67cd..190da931750dcaef873126324b201affb1aee83f 100644
--- a/packages/component-manuscript/src/atoms/index.js
+++ b/packages/component-manuscript/src/atoms/index.js
@@ -16,8 +16,10 @@ const Title = styled.div`
   ${defaultText};
   font-size: ${th('fontSizeBase')};
   color: ${th('colorPrimary')};
-  margin-bottom: ${th('gridUnit')};
   text-align: left;
+  p {
+    margin: 0;
+  }
 `
 
 const Container = styled.div`
@@ -35,6 +37,8 @@ const Header = styled.div`
   align-items: center;
   display: flex;
   flex-direction: row;
+  margin-bottom: ${th('subGridUnit')};
+  flex-wrap: wrap;
 `
 
 const BreadCrumbs = styled.div`
@@ -62,7 +66,7 @@ const ManuscriptId = styled.div`
   ${defaultText};
   color: ${th('colorPrimary')};
   font-size: ${th('fontSizeBase')};
-  margin-right: 8px;
+  margin-right: ${th('subGridUnit')};
   text-align: left;
   text-transform: uppercase;
   white-space: nowrap;
@@ -74,7 +78,6 @@ const LeftDetails = styled.div`
   justify-content: flex-start;
   align-items: center;
   flex: ${({ flex }) => flex || 1};
-  max-width: 75%;
 `
 
 const RightDetails = styled.div`
@@ -83,7 +86,6 @@ const RightDetails = styled.div`
   justify-content: flex-end;
   align-items: center;
   flex: ${({ flex }) => flex || 1};
-  max-width: 75%;
 `
 
 const StatusLabel = styled.div`
@@ -102,6 +104,30 @@ const DateField = styled.span`
   margin: 0 ${th('subGridUnit')};
   text-align: left;
 `
+const Row = styled.div`
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  width: 100%;
+  box-sizing: border-box;
+  flex-wrap: wrap;
+`
+
+const ManuscriptType = styled.div`
+  ${defaultText};
+  padding: ${th('subGridUnit')};
+  margin-left: calc(${th('subGridUnit')}*2);
+  text-align: right;
+  text-transform: capitalize;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+`
+
+const ManuscriptHeader = styled.div`
+  border-bottom: ${th('borderDefault')};
+  padding-bottom: calc(${th('subGridUnit')}*2);
+`
 
 export {
   Root,
@@ -109,10 +135,13 @@ export {
   Header,
   Title,
   ManuscriptId,
+  ManuscriptType,
   Container,
   SideBar,
   LeftDetails,
   RightDetails,
   StatusLabel,
   DateField,
+  Row,
+  ManuscriptHeader,
 }
diff --git a/packages/component-manuscript/src/components/ManuscriptDetails.js b/packages/component-manuscript/src/components/ManuscriptDetails.js
deleted file mode 100644
index fbef181efe918f594fa3bf896e622113241ca8eb..0000000000000000000000000000000000000000
--- a/packages/component-manuscript/src/components/ManuscriptDetails.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React, { Fragment } from 'react'
-// import { AuthorsWithTooltip } from '@pubsweet/ui'
-
-import { Title } from '../atoms'
-
-import AuthorsWithTooltip from '../molecules/AuthorsWithTooltip'
-
-const ManuscriptDetails = ({ version, project }) => (
-  <Fragment>
-    <Title dangerouslySetInnerHTML={{ __html: version.metadata.title }} />
-    <AuthorsWithTooltip authors={project.authors} />
-  </Fragment>
-)
-
-export default ManuscriptDetails
diff --git a/packages/component-manuscript/src/components/ManuscriptHeader.js b/packages/component-manuscript/src/components/ManuscriptHeader.js
new file mode 100644
index 0000000000000000000000000000000000000000..03f49d508ad381bf1e057127748ada78814c2ded
--- /dev/null
+++ b/packages/component-manuscript/src/components/ManuscriptHeader.js
@@ -0,0 +1,45 @@
+import React from 'react'
+import { get } from 'lodash'
+// import { AuthorsWithTooltip } from '@pubsweet/ui'
+
+import {
+  Title,
+  LeftDetails,
+  RightDetails,
+  Row,
+  StatusLabel,
+  DateField,
+  ManuscriptType,
+  ManuscriptHeader,
+} from '../atoms'
+
+import { parseVersion, parseJournalIssue, mapStatusToLabel } from './utils'
+import AuthorsWithTooltip from '../molecules/AuthorsWithTooltip'
+
+const ManuscriptDetails = ({ version, project, journal }) => {
+  const { submitted, title, type } = parseVersion(version)
+  const metadata = get(version, 'metadata')
+  const journalIssueType = parseJournalIssue(journal, metadata)
+  const manuscriptMeta = `${type} - ${
+    journalIssueType ? journalIssueType.label : 'N/A'
+  }`
+  return (
+    <ManuscriptHeader>
+      <Title dangerouslySetInnerHTML={{ __html: title }} />
+      <Row>
+        <LeftDetails flex={3}>
+          <StatusLabel>{mapStatusToLabel(project)}</StatusLabel>
+          <DateField>{submitted || ''}</DateField>
+        </LeftDetails>
+        <RightDetails flex={4}>
+          <ManuscriptType title={manuscriptMeta}>
+            {manuscriptMeta}
+          </ManuscriptType>
+        </RightDetails>
+      </Row>
+      <AuthorsWithTooltip authors={project.authors} />
+    </ManuscriptHeader>
+  )
+}
+
+export default ManuscriptDetails
diff --git a/packages/component-manuscript/src/components/ManuscriptLayout.js b/packages/component-manuscript/src/components/ManuscriptLayout.js
index 7c852d0b8b10e13ee83053da03f3897a090347ad..e0bf2d3911b519621facfe53f1c2dbb3b2224853 100644
--- a/packages/component-manuscript/src/components/ManuscriptLayout.js
+++ b/packages/component-manuscript/src/components/ManuscriptLayout.js
@@ -1,6 +1,7 @@
 import React from 'react'
 
-import ManuscriptDetails from './ManuscriptDetails'
+import ManuscriptHeader from './ManuscriptHeader'
+import ManuscriptVersion from './ManuscriptVersion'
 import {
   Root,
   BreadCrumbs,
@@ -8,6 +9,8 @@ import {
   ManuscriptId,
   Container,
   SideBar,
+  LeftDetails,
+  RightDetails,
 } from '../atoms'
 
 const ManuscriptLayout = ({
@@ -15,17 +18,23 @@ const ManuscriptLayout = ({
   updateManuscript,
   project,
   version,
+  journal,
 }) => (
   <Root>
     <Container flex={3}>
       <Header>
-        <BreadCrumbs>
-          <span>Dashboard</span>
-          <span>Manuscript Details</span>
-        </BreadCrumbs>
-        <ManuscriptId>{`- ID ${project.customId}`}</ManuscriptId>
+        <LeftDetails>
+          <BreadCrumbs>
+            <span>Dashboard</span>
+            <span>Manuscript Details</span>
+          </BreadCrumbs>
+          <ManuscriptId>{`- ID ${project.customId}`}</ManuscriptId>
+        </LeftDetails>
+        <RightDetails>
+          <ManuscriptVersion project={project} />
+        </RightDetails>
       </Header>
-      <ManuscriptDetails project={project} version={version} />
+      <ManuscriptHeader journal={journal} project={project} version={version} />
     </Container>
     <SideBar flex={1}>Sidebar</SideBar>
   </Root>
diff --git a/packages/component-manuscript/src/components/ManuscriptPage.js b/packages/component-manuscript/src/components/ManuscriptPage.js
index 091de333fb7acdc054de6f5cb42156ec29ce8030..0179406874f89e00b929d56de0f74446ddc48cbe 100644
--- a/packages/component-manuscript/src/components/ManuscriptPage.js
+++ b/packages/component-manuscript/src/components/ManuscriptPage.js
@@ -1,6 +1,7 @@
 import { connect } from 'react-redux'
 import { actions } from 'pubsweet-client'
 import { ConnectPage } from 'xpub-connect'
+import { withJournal } from 'xpub-journal'
 import {
   selectCurrentUser,
   selectCollection,
@@ -14,6 +15,7 @@ import { parseSearchParams, redirectToError } from './utils'
 import { reviewerDecision } from '../../../components-faraday/src/redux/reviewers'
 
 export default compose(
+  withJournal,
   ConnectPage(({ match }) => [
     actions.getCollection({ id: match.params.project }),
     actions.getFragment(
diff --git a/packages/component-manuscript/src/components/ManuscriptVersion.js b/packages/component-manuscript/src/components/ManuscriptVersion.js
new file mode 100644
index 0000000000000000000000000000000000000000..ddad835f7ccda0f60b9f15923105b039f3151d40
--- /dev/null
+++ b/packages/component-manuscript/src/components/ManuscriptVersion.js
@@ -0,0 +1,27 @@
+import React from 'react'
+import { get } from 'lodash'
+import { Menu } from '@pubsweet/ui'
+import { compose } from 'recompose'
+import { connect } from 'react-redux'
+import { selectFragments } from 'xpub-selectors'
+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')}
+  />
+)
+
+export default compose(
+  withRouter,
+  connect((state, { project }) => ({
+    fragments: selectFragments(state, project.fragments),
+  })),
+)(ManuscriptVersion)
diff --git a/packages/component-manuscript/src/components/utils.js b/packages/component-manuscript/src/components/utils.js
index 9aed3777b03c8afb27cc7556190c9f7d1130ae83..0fb7764d1db83459daa972501fdd4b3bc1afe763 100644
--- a/packages/component-manuscript/src/components/utils.js
+++ b/packages/component-manuscript/src/components/utils.js
@@ -1,15 +1,76 @@
-/* eslint-disable */
-import { get } from 'lodash'
+import moment from 'moment'
+import { get, find, capitalize } from 'lodash'
+
+export const parseTitle = version => {
+  const title = get(version, 'metadata.title')
+  if (title) {
+    return title.replace(/<p[^>]*>/g, '').replace(/<\/p>/g, '')
+  }
+  return 'Untitled'
+}
+
+export const parseAuthor = version => {
+  const author = find(get(version, 'authors'), a => a.isSubmitting)
+  return author ? `${author.firstName} ${author.lastName}` : 'N/A'
+}
+
+export const parseType = version => {
+  const type = get(version, 'metadata.type')
+  return type ? type.replace('-', ' ') : 'N/A'
+}
+
+export const parseSubmissionDate = version => {
+  const submitted = get(version, 'submitted')
+  const submittedDate = moment(submitted)
+  const today = moment()
+  const daysAgo = moment.duration(today - moment(submitted)).days()
+  return submitted
+    ? `${submittedDate.format('DD.MM.YYYY')} ${
+        daysAgo > 0 ? `(${daysAgo} days)` : ''
+      }`
+    : 'N/A'
+}
+
+export const mapStatusToLabel = ({ visibleStatus, status }) => {
+  if (visibleStatus) {
+    return visibleStatus
+  } else if (status) {
+    return capitalize(status)
+  }
+  return 'Draft'
+}
+
+export const parseVersion = version => ({
+  author: parseAuthor(version),
+  title: parseTitle(version),
+  submitted: parseSubmissionDate(version),
+  type: parseType(version),
+  abstract: get(version, 'metadata.abstract'),
+  version: get(version, 'version'),
+})
+
+export const parseJournalIssue = (journal, metadata) =>
+  journal.issueTypes.find(t => t.value === get(metadata, 'issue'))
 
 export const parseSearchParams = url => {
   const params = new URLSearchParams(url)
   const parsedObject = {}
+  /* eslint-disable */
   for ([key, value] of params) {
     parsedObject[key] = value
   }
+  /* eslint-enable */
   return parsedObject
 }
 
+export const parseVersionOptions = fragments =>
+  fragments.map(f => ({
+    value: f.id,
+    label: `Version ${f.version} - updated on ${moment(f.submitted).format(
+      'DD.MM.YYYY',
+    )}`,
+  }))
+
 const alreadyAnswered = `You have already answered this invitation.`
 export const redirectToError = redirectFn => err => {
   const errorText = get(JSON.parse(err.response), 'error')
diff --git a/packages/component-wizard/src/components/WizardFormStep.js b/packages/component-wizard/src/components/WizardFormStep.js
index b50d4d3e408bc85af1d024e385aa8aa350fa8486..f28662bbe5a2f8f787844e91eefa160121af7087 100644
--- a/packages/component-wizard/src/components/WizardFormStep.js
+++ b/packages/component-wizard/src/components/WizardFormStep.js
@@ -54,7 +54,11 @@ const submitManuscript = (
       ),
     )
     .then(() => {
-      history.push(redirectPath, { project: project.id, version: version.id })
+      history.push(redirectPath, {
+        project: project.id,
+        customId: project.customId,
+        version: version.id,
+      })
     })
     .catch(error => {
       if (error.validationErrors) {
diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js
index dfcffae0388b09700a6f4b1eeda3fe7202a171b1..d85713ebe1c0fa703db0c99ea50dd551b665dd90 100644
--- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js
+++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js
@@ -279,7 +279,7 @@ const LeftDetails = styled.div`
   justify-content: flex-start;
   align-items: center;
   flex: ${({ flex }) => flex || 1};
-  max-width: 75%;
+  flex-wrap: wrap;
 `
 
 const RightDetails = styled.div`
@@ -288,7 +288,7 @@ const RightDetails = styled.div`
   justify-content: flex-end;
   align-items: center;
   flex: ${({ flex }) => flex || 1};
-  max-width: 75%;
+  flex-wrap: wrap;
 `
 
 const DetailsView = styled.div`
@@ -355,6 +355,7 @@ const Top = styled.div`
   padding: 10px;
   width: 100%;
   box-sizing: border-box;
+  flex-wrap: wrap;
 `
 const Bottom = styled.div`
   display: flex;
@@ -363,6 +364,7 @@ const Bottom = styled.div`
   width: 100%;
   box-sizing: border-box;
   justify-content: space-between;
+  flex-wrap: wrap;
 `
 
 const ManuscriptType = styled.div`
diff --git a/packages/components-faraday/src/components/Files/Files.js b/packages/components-faraday/src/components/Files/Files.js
index e7213fe79e52c59eafd318660a777a46d68f82cb..8f95fb3a7ef3170984a02a601eae628d95d64fd5 100644
--- a/packages/components-faraday/src/components/Files/Files.js
+++ b/packages/components-faraday/src/components/Files/Files.js
@@ -111,10 +111,15 @@ export default compose(
     },
   }),
   withHandlers({
-    previewFile: ({ getSignedUrl, files, getFileName }) => fileId => e => {
+    previewFile: ({
+      files,
+      version,
+      getFileName,
+      getSignedUrl,
+    }) => fileId => e => {
       e.preventDefault()
       const windowReference = window.open()
-      getSignedUrl(fileId).then(({ signedUrl, ...rest }) => {
+      getSignedUrl(version.id, fileId).then(({ signedUrl, ...rest }) => {
         windowReference.location = signedUrl
       })
     },
diff --git a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js
index 557a86d74a3d7611fa11bed856b3c5eefccb0f12..bd6dc66d48f04bfe823b91985e52472e79840fd9 100644
--- a/packages/components-faraday/src/components/Reviewers/InviteReviewers.js
+++ b/packages/components-faraday/src/components/Reviewers/InviteReviewers.js
@@ -16,6 +16,7 @@ import {
   selectReviewersError,
   selectFetchingReviewers,
   getCollectionReviewers,
+  clearReviewersError,
 } from '../../redux/reviewers'
 
 const InviteReviewers = ({ showInviteModal }) => (
@@ -110,11 +111,18 @@ const ModalSwitcher = compose(
 })
 
 export default compose(
+  connect(null, { clearReviewersError }),
   withModal2(props => ({
     modalComponent: ModalSwitcher,
   })),
   withHandlers({
-    showInviteModal: ({ showModal, hideModal, project }) => () => {
+    showInviteModal: ({
+      project,
+      hideModal,
+      showModal,
+      clearReviewersError,
+    }) => () => {
+      clearReviewersError()
       showModal({
         type: 'invite-reviewers',
         collectionId: project.id,
diff --git a/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js b/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js
index 759032ff1a777c1358b33a8c45ec2b8fefd72e41..bc6a07e7d0728576a4988c7ae6af722732f64661 100644
--- a/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js
+++ b/packages/components-faraday/src/components/UIComponents/ConfirmationPage.js
@@ -34,9 +34,9 @@ const ConfirmationPage = ({
               <a
                 href={`/projects/${state.project}/versions/${
                   state.version
-                }/manuscript`}
+                }/details`}
               >
-                {state.project}
+                {state.customId}
               </a>
             </b>.
           </p>
diff --git a/packages/components-faraday/src/redux/files.js b/packages/components-faraday/src/redux/files.js
index a296178e9e7e0b996ba035bdf84adf4000529b24..df9608cadc702ca445b6f14e9ba55acf457717f0 100644
--- a/packages/components-faraday/src/redux/files.js
+++ b/packages/components-faraday/src/redux/files.js
@@ -90,7 +90,8 @@ export const deleteFile = fileId => dispatch => {
     .catch(err => dispatch(removeFailure(err.message)))
 }
 
-export const getSignedUrl = fileId => dispatch => get(`/files/${fileId}`)
+export const getSignedUrl = (fragmentId, fileId) => dispatch =>
+  get(`/files/${fragmentId}/${fileId}`)
 
 // reducer
 export default (state = initialState, action) => {
diff --git a/packages/components-faraday/src/redux/reviewers.js b/packages/components-faraday/src/redux/reviewers.js
index 7678362184dadde9df289656d5e1a47763da2874..05ca433eead3cff0ea88ee40c15bc33c6a7ac391 100644
--- a/packages/components-faraday/src/redux/reviewers.js
+++ b/packages/components-faraday/src/redux/reviewers.js
@@ -66,6 +66,11 @@ const initialState = {
   reviewers: [],
 }
 
+const CLEAR_ERROR = 'reviewers/CLEAR_ERROR'
+export const clearReviewersError = () => ({
+  type: CLEAR_ERROR,
+})
+
 // selectors
 export const selectReviewers = state => get(state, 'reviewers.reviewers') || []
 export const selectReviewersError = state => get(state, 'reviewers.error')
@@ -246,6 +251,12 @@ export default (state = initialState, action = {}) => {
         },
         error: null,
       }
+    case CLEAR_ERROR: {
+      return {
+        ...state,
+        error: null,
+      }
+    }
     default:
       return state
   }
diff --git a/packages/xpub-faraday/package.json b/packages/xpub-faraday/package.json
index d8a4b5d985bc3eea5dcff78beab23086b9774fed..2eb73265177e4fcdb67a308ec4adddd61a7a3940 100644
--- a/packages/xpub-faraday/package.json
+++ b/packages/xpub-faraday/package.json
@@ -23,7 +23,7 @@
     "moment": "^2.18.1",
     "nodemailer-ses-transport": "^1.5.1",
     "prop-types": "^15.5.10",
-    "pubsweet": "2.1.3",
+    "pubsweet": "^2.2.1",
     "pubsweet-client": "^2.2.2",
     "pubsweet-component-login": "^1.1.0",
     "pubsweet-component-signup": "^1.0.0",
diff --git a/yarn.lock b/yarn.lock
index 270f9a283e25ad0c2358b0486028ed5ef79df5d5..b3ff38cbf9403bf4d5b8c782fdef4144440e7d72 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -97,16 +97,16 @@
     aws-sdk "^2.185.0"
     nodemailer "^4.4.2"
 
-"@pubsweet/db-manager@^1.0.3":
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-1.0.3.tgz#e8784c87eee958ed17daa12f54625774bd2fd277"
+"@pubsweet/db-manager@^1.0.10":
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/@pubsweet/db-manager/-/db-manager-1.0.10.tgz#88d9f935cb04943ea150ef3820810f792bb6308e"
   dependencies:
     "@pubsweet/logger" "^0.2.2"
     fs-extra "^4.0.2"
     isomorphic-fetch "^2.2.1"
     joi "^13.1.0"
     pg "^7.4.1"
-    pubsweet-server "^2.0.3"
+    pubsweet-server "^6.1.0"
 
 "@pubsweet/default-theme@^0.2.0":
   version "0.2.0"
@@ -223,6 +223,28 @@
     redux-form "^7.0.3"
     styled-components "^2.4.0"
 
+"@pubsweet/ui@^3.3.3":
+  version "3.3.4"
+  resolved "https://registry.yarnpkg.com/@pubsweet/ui/-/ui-3.3.4.tgz#f4dda1e900268a7c460f01aec40da187518b6363"
+  dependencies:
+    babel-jest "^21.2.0"
+    classnames "^2.2.5"
+    enzyme "^3.2.0"
+    enzyme-adapter-react-16 "^1.1.1"
+    invariant "^2.2.3"
+    lodash "^4.17.4"
+    prop-types "^15.5.10"
+    react "^16.2.0"
+    react-dom "^16.2.0"
+    react-feather "^1.0.8"
+    react-redux "^5.0.2"
+    react-router-dom "^4.2.2"
+    react-tag-autocomplete "^5.5.0"
+    recompose "^0.26.0"
+    redux "^3.6.0"
+    redux-form "^7.0.3"
+    styled-components "^3.2.5"
+
 "@types/node@*":
   version "9.4.6"
   resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e"
@@ -650,6 +672,10 @@ authsome@0.0.9:
   version "0.0.9"
   resolved "https://registry.yarnpkg.com/authsome/-/authsome-0.0.9.tgz#08b34f1797b3539e6a362f0fb11a01ae0613f928"
 
+authsome@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/authsome/-/authsome-0.1.0.tgz#4152e666afcaa7f7c51ddbed94145ad7105904d9"
+
 autoprefixer@^6.3.1:
   version "6.7.7"
   resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
@@ -4558,6 +4584,12 @@ invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1, invarian
   dependencies:
     loose-envify "^1.0.0"
 
+invariant@^2.2.3:
+  version "2.2.4"
+  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+  dependencies:
+    loose-envify "^1.0.0"
+
 invert-kv@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
@@ -7308,7 +7340,7 @@ promise@^7.1.1:
   dependencies:
     asap "~2.0.3"
 
-prompt@^1.0.0, prompt@flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87:
+prompt@^1.0.0, "prompt@github:flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87":
   version "1.0.0"
   resolved "https://codeload.github.com/flatiron/prompt/tar.gz/1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87"
   dependencies:
@@ -7483,7 +7515,7 @@ pubsweet-component-signup@^1.0.0:
     react-router "^4.2.0"
     redux "^3.7.2"
 
-pubsweet-server@2.0.3, pubsweet-server@^2.0.3:
+pubsweet-server@2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/pubsweet-server/-/pubsweet-server-2.0.3.tgz#97d36cec0e2f4f0c2955fb0b0de73206ec05fe69"
   dependencies:
@@ -7521,15 +7553,57 @@ pubsweet-server@2.0.3, pubsweet-server@^2.0.3:
     uuid "^3.0.1"
     winston "^2.2.0"
 
+pubsweet-server@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/pubsweet-server/-/pubsweet-server-6.1.0.tgz#038b8fdb08717c1b701f175030546492f387303c"
+  dependencies:
+    "@pubsweet/logger" "^0.2.2"
+    apollo-server-express "^1.3.2"
+    apollo-upload-server "^4.0.2"
+    authsome "^0.1.0"
+    bcrypt "^1.0.2"
+    bluebird "^3.5.1"
+    body-parser "^1.15.2"
+    colors "^1.1.2"
+    config "^1.26.2"
+    cookie-parser "^1.4.3"
+    dotenv "^4.0.0"
+    express "^4.16.1"
+    graphql "^0.12.3"
+    graphql-tools "^2.18.0"
+    helmet "^3.8.1"
+    http-status-codes "^1.0.6"
+    joi "^13.1.0"
+    jsonwebtoken "^7.1.7"
+    lodash "^4.0.0"
+    minimist "^1.2.0"
+    morgan "^1.8.2"
+    multer "^1.1.0"
+    passport "^0.3.2"
+    passport-anonymous "^1.0.1"
+    passport-http-bearer "^1.0.1"
+    passport-local "^1.0.0"
+    pg "^7.4.1"
+    promise-queue "^2.2.3"
+    prompt "^1.0.0"
+    pubsweet-sse "^1.0.0"
+    require-relative "^0.8.7"
+    uuid "^3.0.1"
+    winston "^2.2.0"
+
 pubsweet-sse@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/pubsweet-sse/-/pubsweet-sse-0.1.4.tgz#1ff38a230143cbd487a8d44afb28a6c4746ee464"
 
-pubsweet@2.1.3:
-  version "2.1.3"
-  resolved "https://registry.yarnpkg.com/pubsweet/-/pubsweet-2.1.3.tgz#bbf7b748a356f9685cf09f14f10ad89ebc0c5a1e"
+pubsweet-sse@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/pubsweet-sse/-/pubsweet-sse-1.0.0.tgz#dd36aa378a302b518d417b545b064da65aec876a"
+
+pubsweet@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/pubsweet/-/pubsweet-2.2.1.tgz#6191303105c8d531a16de7090b89aec8f451a454"
   dependencies:
-    "@pubsweet/db-manager" "^1.0.3"
+    "@pubsweet/db-manager" "^1.0.10"
     "@pubsweet/logger" "^0.2.2"
     bluebird "^3.5.0"
     colors "^1.1.2"
@@ -7539,7 +7613,7 @@ pubsweet@2.1.3:
     fs-extra "^4.0.2"
     inflection "^1.12.0"
     prompt flatiron/prompt#1c95d1d8d333b5fbc13fa5f0619f3dcf0d514f87
-    pubsweet-server "^2.0.3"
+    pubsweet-server "^6.1.0"
     require-relative "^0.8.7"
     uuid "^3.0.1"
     webpack "^3.8.1"
@@ -7740,6 +7814,10 @@ react-hot-loader@^3.1.1:
     redbox-react "^1.3.6"
     source-map "^0.6.1"
 
+react-is@^16.3.1:
+  version "16.3.2"
+  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22"
+
 react-overlays@^0.8.0:
   version "0.8.3"
   resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz#fad65eea5b24301cca192a169f5dddb0b20d3ac5"
@@ -8906,6 +8984,21 @@ styled-components@^3.1.6:
     stylis-rule-sheet "^0.0.7"
     supports-color "^3.2.3"
 
+styled-components@^3.2.5:
+  version "3.2.6"
+  resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-3.2.6.tgz#99e6e75a746bdedd295a17e03dd1493055a1cc3b"
+  dependencies:
+    buffer "^5.0.3"
+    css-to-react-native "^2.0.3"
+    fbjs "^0.8.16"
+    hoist-non-react-statics "^2.5.0"
+    is-plain-object "^2.0.1"
+    prop-types "^15.5.4"
+    react-is "^16.3.1"
+    stylis "^3.5.0"
+    stylis-rule-sheet "^0.0.10"
+    supports-color "^3.2.3"
+
 styled-normalize@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/styled-normalize/-/styled-normalize-3.0.1.tgz#217efb96598690addd04699ca71af0db3473fea2"
@@ -8980,6 +9073,10 @@ stylelint@^8.2.0:
     svg-tags "^1.0.0"
     table "^4.0.1"
 
+stylis-rule-sheet@^0.0.10:
+  version "0.0.10"
+  resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
+
 stylis-rule-sheet@^0.0.7:
   version "0.0.7"
   resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.7.tgz#5c51dc879141a61821c2094ba91d2cbcf2469c6c"
@@ -8988,6 +9085,10 @@ stylis@^3.4.0:
   version "3.4.10"
   resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.4.10.tgz#a135cab4b9ff208e327fbb5a6fde3fa991c638ee"
 
+stylis@^3.5.0:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.0.tgz#016fa239663d77f868fef5b67cf201c4b7c701e1"
+
 sugarss@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz#be826d9003e0f247735f92365dc3fd7f1bae9e44"
@@ -9931,6 +10032,16 @@ xmlbuilder@4.2.1, xmlbuilder@^4.1.0:
   dependencies:
     lodash "^4.0.0"
 
+xpub-connect@^0.0.10:
+  version "0.0.10"
+  resolved "https://registry.yarnpkg.com/xpub-connect/-/xpub-connect-0.0.10.tgz#453fa33f6717c4b70afdd1248baee63c478facfc"
+  dependencies:
+    "@pubsweet/ui" "^3.3.3"
+    react-redux "^5.0.2"
+    react-router-dom "^4.2.2"
+    recompose "^0.26.0"
+    styled-components "^3.2.5"
+
 xpub-connect@^0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/xpub-connect/-/xpub-connect-0.0.3.tgz#84d7293dc939624c7b4305ca6dc1e2e355aed4d4"
@@ -9972,6 +10083,10 @@ xpub-selectors@^0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/xpub-selectors/-/xpub-selectors-0.0.3.tgz#0ddb67feeebb20936c68567ef874543e5e6f05b9"
 
+xpub-selectors@^0.0.5:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/xpub-selectors/-/xpub-selectors-0.0.5.tgz#bb728826c65e55f607677db007d0a04440f6c12e"
+
 xpub-styleguide@^0.0.3:
   version "0.0.3"
   resolved "https://registry.yarnpkg.com/xpub-styleguide/-/xpub-styleguide-0.0.3.tgz#91fd6000956d61f40a730a3f963082a7b4fba54d"