diff --git a/app/components/AdminPage.js b/app/components/AdminPage.js
index 870c4be6d8aa84fb54f88736502432c0e5637035..c295c2a85723efd557a22368ad14e5efce11c791 100644
--- a/app/components/AdminPage.js
+++ b/app/components/AdminPage.js
@@ -81,7 +81,7 @@ const AdminPage = ({ children, history, match }) => {
 
   // Get the current user every 5 seconds (this includes authorization info)
   const { loading, error, data } = useQuery(GET_CURRENT_USER, {
-    pollInterval: 5000,
+    pollInterval: 30000,
     notifyOnNetworkStatusChange: true,
     fetchPolicy: 'network-only',
     // TODO: useCallback used because of bug: https://github.com/apollographql/apollo-client/issues/6301
@@ -133,7 +133,7 @@ const AdminPage = ({ children, history, match }) => {
   }
 
   if (currentUser && currentUser.admin) {
-    links.push({ link: '/journal/admin/teams', name: 'Teams', icon: 'grid' })
+    // links.push({ link: '/journal/admin/teams', name: 'Teams', icon: 'grid' })
     links.push({ link: formBuilderLink, name: 'Forms', icon: 'check-square' })
     links.push({ link: '/journal/admin/users', name: 'Users', icon: 'users' })
     links.push({
diff --git a/app/components/component-dashboard/src/components/sections/OwnerItem.js b/app/components/component-dashboard/src/components/sections/OwnerItem.js
index 9fb9fb2c4bdbeb04641f34d3235721cdf8f914b5..7540f7d57baa412b82ee3bde036e4193f20b3c01 100644
--- a/app/components/component-dashboard/src/components/sections/OwnerItem.js
+++ b/app/components/component-dashboard/src/components/sections/OwnerItem.js
@@ -33,7 +33,6 @@ const OwnerItem = ({ version, journals, deleteManuscript }) => {
       <div>
         {' '}
         <StatusBadge minimal status={version.status} />
-        {JSON.stringify(version._currentRoles)}
         <VersionTitle version={version} />
       </div>
       {actions}
diff --git a/app/components/component-manuscripts/src/Manuscripts.jsx b/app/components/component-manuscripts/src/Manuscripts.jsx
index 574397c14fe108366d1593f3b0e2ae30c7b07c4f..5d62f1d99c9d9ddff69766c5a337460b7d6bb9d2 100644
--- a/app/components/component-manuscripts/src/Manuscripts.jsx
+++ b/app/components/component-manuscripts/src/Manuscripts.jsx
@@ -8,7 +8,7 @@ import {
   Table,
   Header,
   Content,
-  PageHeading,
+  Heading,
   Carets,
   CaretUp,
   CaretDown,
@@ -106,7 +106,7 @@ const Manuscripts = () => {
 
   return (
     <Container>
-      <PageHeading level={1}>Manuscripts</PageHeading>
+      <Heading>Manuscripts</Heading>
       <Content>
         <Table>
           <Header>
diff --git a/app/components/component-manuscripts/src/style.js b/app/components/component-manuscripts/src/style.js
index 6b132297686c80cfa6838379c7d6038ddbf4155f..14e794f51b9afb81f41e3f97a39277a5b04414b0 100644
--- a/app/components/component-manuscripts/src/style.js
+++ b/app/components/component-manuscripts/src/style.js
@@ -13,7 +13,7 @@ export {
   Table,
   Header,
   Content,
-  PageHeading,
+  Heading,
   Carets,
   CaretUp,
   CaretDown,
diff --git a/app/components/component-review/src/components/ReviewersPage.js b/app/components/component-review/src/components/ReviewersPage.js
index 266792ad751c51e2beb4f19aae84294521048539..33ae162f81c2cde8fd1a89cf0aa5ee23a150687d 100644
--- a/app/components/component-review/src/components/ReviewersPage.js
+++ b/app/components/component-review/src/components/ReviewersPage.js
@@ -99,10 +99,6 @@ const query = gql`
       }
     }
 
-    teams {
-      ${teamFields}
-    }
-
     manuscript(id: $id) {
       ${fragmentFields}
     }
@@ -114,7 +110,37 @@ const ReviewersPage = ({ match, history }) => {
     variables: { id: match.params.version },
   })
 
-  const [addReviewer] = useMutation(addReviewerMutation)
+  const [addReviewer] = useMutation(addReviewerMutation, {
+    update: (cache, { data: { addReviewer } }) => {
+      cache.modify({
+        id: cache.identify({
+          __typename: addReviewer.object.objectType,
+          id: addReviewer.object.objectId,
+        }),
+        fields: {
+          teams(existingTeamRefs = []) {
+            const newTeamRef = cache.writeFragment({
+              data: addReviewer,
+              fragment: gql`
+                fragment NewTeam on Team {
+                  id
+                  role
+                  members {
+                    id
+                    user {
+                      id
+                    }
+                  }
+                }
+              `,
+            })
+
+            return [...existingTeamRefs, newTeamRef]
+          },
+        },
+      })
+    },
+  })
   const [removeReviewer] = useMutation(removeReviewerMutation)
 
   if (loading) {
@@ -122,14 +148,9 @@ const ReviewersPage = ({ match, history }) => {
   }
   if (error) return error
 
-  const { manuscript, teams, users } = data
+  const { manuscript, users } = data
   const reviewersTeam =
-    teams.find(
-      team =>
-        team.role === 'reviewer' &&
-        team.object.objectId === manuscript.id &&
-        team.object.objectType === 'Manuscript',
-    ) || {}
+    manuscript.teams.find(team => team.role === 'reviewer') || {}
 
   const reviewers = reviewersTeam.members || []
   return (
diff --git a/app/components/component-review/src/components/reviewers/ReviewerForm.js b/app/components/component-review/src/components/reviewers/ReviewerForm.js
index 595a27a257c74b086321818a44ba8835d54b83cf..82ab824a5e50af22a331da7d143982597e09e649 100644
--- a/app/components/component-review/src/components/reviewers/ReviewerForm.js
+++ b/app/components/component-review/src/components/reviewers/ReviewerForm.js
@@ -28,6 +28,7 @@ const ReviewerInput = ({
 }) => (
   <Select
     {...field}
+    aria-label="Invite reviewers"
     getOptionLabel={option => option.defaultIdentity?.name}
     getOptionValue={option => option.id}
     onChange={user => {
diff --git a/app/components/component-review/src/components/reviewers/Reviewers.js b/app/components/component-review/src/components/reviewers/Reviewers.js
index b084c6110b6f692deffa1e6a11fe8c683e8cab01..7935205aaf4f36260233d9db89b11d8d6df84bec 100644
--- a/app/components/component-review/src/components/reviewers/Reviewers.js
+++ b/app/components/component-review/src/components/reviewers/Reviewers.js
@@ -72,7 +72,7 @@ const Reviewers = ({
         <Title>Reviewer status</Title>
       </SectionHeader>
       <SectionRow>
-        {reviewers && (
+        {reviewers && reviewers.length ? (
           <ReviewersList>
             {reviewers.map(reviewer => (
               <Reviewer>
@@ -96,6 +96,8 @@ const Reviewers = ({
               </Reviewer>
             ))}
           </ReviewersList>
+        ) : (
+          <p>No reviewers have been invited yet</p>
         )}
       </SectionRow>
     </SectionContent>
diff --git a/app/components/component-submit/src/components/NewSubmissionPage.jsx b/app/components/component-submit/src/components/NewSubmissionPage.jsx
index 922ad7fd029d2d0aa270b17c9c3114682e865b07..24371795dfd56b3134c7ac156603713cb73c3171 100644
--- a/app/components/component-submit/src/components/NewSubmissionPage.jsx
+++ b/app/components/component-submit/src/components/NewSubmissionPage.jsx
@@ -1,7 +1,7 @@
 import React from 'react'
 import { ApolloConsumer } from '@apollo/client'
 import config from 'config'
-import { Container, Content, UploadContainer, PageHeading } from '../style'
+import { Container, Content, UploadContainer, Heading } from '../style'
 import UploadManuscript from './UploadManuscript'
 import useCurrentUser from '../../../../hooks/useCurrentUser'
 
@@ -17,7 +17,7 @@ const Dashboard = props => {
 
   return (
     <Container>
-      <PageHeading level={1}>New submission</PageHeading>
+      <Heading>New submission</Heading>
       <Content>
         <UploadContainer>
           <ApolloConsumer>
diff --git a/app/components/component-submit/src/style.js b/app/components/component-submit/src/style.js
index 60958565063c6632536fa979550a1b6253baf18d..a6907021877c0597953c0b30b6d48c54798e1a0c 100644
--- a/app/components/component-submit/src/style.js
+++ b/app/components/component-submit/src/style.js
@@ -1,7 +1,7 @@
 import styled from 'styled-components'
 import { th, grid } from '@pubsweet/ui-toolkit'
 
-export { Container, Content, PageHeading } from '../../shared'
+export { Container, Content, Heading } from '../../shared'
 
 export const Heading1 = styled.h1`
   margin: 0 0 calc(${th('gridUnit')} * 3);
@@ -34,6 +34,7 @@ export const SubNote = styled.span`
 `
 
 export const UploadContainer = styled.div`
+  margin-top: ${grid(2)};
   padding: ${grid(3)};
   text-align: center;
 `
diff --git a/app/components/component-users-manager/src/UsersManager.jsx b/app/components/component-users-manager/src/UsersManager.jsx
index 72869f557d834fe92c44181e9a5138377bf501ef..08e10ec9f8e629a2257ea3bec8a3419a119d7207 100644
--- a/app/components/component-users-manager/src/UsersManager.jsx
+++ b/app/components/component-users-manager/src/UsersManager.jsx
@@ -8,7 +8,7 @@ import {
   Container,
   Table,
   Header,
-  PageHeading,
+  Heading,
   Content,
   Spinner,
   Pagination,
@@ -98,7 +98,7 @@ const UsersManager = () => {
 
   return (
     <Container>
-      <PageHeading level={1}>Users</PageHeading>
+      <Heading>Users</Heading>
       <Content>
         <Table>
           <Header>
diff --git a/app/components/component-users-manager/src/style.js b/app/components/component-users-manager/src/style.js
index 4916f05bde871ca7378b85f7170db7c6d38c62f5..0844f5d2612df32a895f694789d82b52b5bc8a1e 100644
--- a/app/components/component-users-manager/src/style.js
+++ b/app/components/component-users-manager/src/style.js
@@ -14,7 +14,7 @@ export {
   Table,
   Header,
   Content,
-  PageHeading,
+  Heading,
   Carets,
   CaretUp,
   CaretDown,
diff --git a/app/components/shared/General.js b/app/components/shared/General.js
index dc6ca58eda32534b3085339d92de8c3087f12d11..14dd43e15e54ad1bc21e371600571356a3fabf3d 100644
--- a/app/components/shared/General.js
+++ b/app/components/shared/General.js
@@ -3,7 +3,7 @@ import { grid, th } from '@pubsweet/ui-toolkit'
 
 export const Section = styled.div`
   padding: ${grid(2)} ${grid(3)};
-  margin-top: ${grid(3)};
+  margin-top: ${grid(2)};
   &:not(:last-of-type) {
     margin-bottom: ${grid(6)};
   }
diff --git a/app/components/shared/Table.jsx b/app/components/shared/Table.jsx
index 76e5b9e7a175a3a4e92f9eb0e7dc4eb120f68ac3..ef21808063909b944b5554a6d601e23f56061791 100644
--- a/app/components/shared/Table.jsx
+++ b/app/components/shared/Table.jsx
@@ -1,8 +1,8 @@
 import styled from 'styled-components'
-import { Heading } from '@pubsweet/ui'
 import { th, grid } from '@pubsweet/ui-toolkit'
 
 export const Table = styled.table`
+  margin-top: ${grid(2)};
   width: 100%;
   border-radius: ${th('borderRadius')};
   border-collapse: collapse;
@@ -13,11 +13,6 @@ export const Table = styled.table`
   }
 `
 
-export const PageHeading = styled(Heading)`
-  color: ${th('colorText')};
-  margin-bottom: 1rem;
-`
-
 export const Header = styled.thead`
   text-align: left;
   font-variant: all-small-caps;
diff --git a/app/theme/elements/TextField.js b/app/theme/elements/TextField.js
index 208da5b828d31b79361ad6359ace209267a36894..acf5abc04e76ec6ad12eb55d6e9c43865508c402 100644
--- a/app/theme/elements/TextField.js
+++ b/app/theme/elements/TextField.js
@@ -1,5 +1,5 @@
 import { css } from 'styled-components'
-import { th } from '@pubsweet/ui-toolkit'
+import { th, grid } from '@pubsweet/ui-toolkit'
 
 export default {
   // TODO
@@ -31,7 +31,6 @@ export default {
       }
     }};
     outline: 0;
-    padding: 0 0 0 2px;
     transition: ${th('transitionDuration')} ${th('transitionTimingFunction')};
 
     &:focus {
@@ -44,4 +43,8 @@ export default {
       line-height: ${th('lineHeightBaseSmall')};
     }
   `,
+
+  Label: css`
+    margin-bottom: ${grid(1)};
+  `,
 }