diff --git a/packages/component-wizard/src/components/ButtonGroup.js b/packages/component-wizard/src/components/ButtonGroup.js
index c1b89cc9694a9dcc2b215dca0b75fb27acb850f4..e9f3060072eda41d799992089e169f4c08d2e3ee 100644
--- a/packages/component-wizard/src/components/ButtonGroup.js
+++ b/packages/component-wizard/src/components/ButtonGroup.js
@@ -1,6 +1,6 @@
 import React from 'react'
 import { compose, withHandlers } from 'recompose'
-import classnames from 'classnames'
+import { Button } from '@pubsweet/ui'
 
 import classes from './ButtonGroup.local.scss'
 
@@ -15,21 +15,13 @@ const ButtonGroup = ({ buttons, handleOnClick, disabled }) =>
   buttons && buttons.length > 0 ? (
     <div className={classes.container}>
       {buttons.map(btn => (
-        <button
-          className={classnames({
-            [classes.button]: true,
-            [classes.next]: btn.action === BUTTON_ACTIONS.next,
-            [classes.finish]: btn.action === BUTTON_ACTIONS.finish,
-            [classes.disabled]:
-              disabled &&
-              (btn.action !== BUTTON_ACTIONS.cancel &&
-                btn.action !== BUTTON_ACTIONS.back),
-          })}
+        <Button
           key={btn.label}
           onClick={handleOnClick(btn.action)}
+          primary={btn.action !== 'back' && btn.action !== 'cancel'}
         >
           {btn.label}
-        </button>
+        </Button>
       ))}
     </div>
   ) : null
diff --git a/packages/component-wizard/src/components/Wizard.js b/packages/component-wizard/src/components/Wizard.js
index b14fbc60a995548fbb0ad640b5ded0c30ef93d36..2348e53962c453edf7c3b23e730d2d9044cf2fc7 100644
--- a/packages/component-wizard/src/components/Wizard.js
+++ b/packages/component-wizard/src/components/Wizard.js
@@ -1,13 +1,13 @@
 import React from 'react'
 import classnames from 'classnames'
 import { withJournal } from 'xpub-journal'
-import { AbstractEditor } from 'xpub-edit'
 import { reduxForm, Field } from 'redux-form'
-import { TextField, YesOrNo, Menu, Checkbox } from '@pubsweet/ui'
 import { compose, withHandlers, withState } from 'recompose'
+import { ValidatedField } from '@pubsweet/ui'
+import { required } from 'xpub-validators'
 
 import classes from './Wizard.local.scss'
-import { Dropdown, Steps, SortableList, ButtonGroup } from './'
+import { Steps, SortableList, ButtonGroup } from './'
 
 const { Step } = Steps
 
@@ -19,22 +19,31 @@ const items = [
   { name: '5gicuta' },
 ]
 
-const renderField = ({ renderComponent, input, ...rest }) => {
-  console.log('Render field', input, rest)
-  return React.createElement(renderComponent, { ...rest, ...input })
+const validate = values => {
+  const errors = {}
+  return errors
 }
 
+const renderField = ({ renderComponent: Comp, input, ...rest }) => (
+  <ValidatedField
+    component={() => <Comp {...input} {...rest} />}
+    name={rest.fieldId}
+    required
+    validate={[required]}
+  />
+)
+
 const WizardStep = ({
   children: stepChildren,
   title,
   buttons,
   nextStep,
   prevStep,
-  onSubmit,
+  handleSubmit,
   ...rest
 }) => (
   <div className={classnames(classes.step)}>
-    <form onSubmit={onSubmit}>
+    <form onSubmit={handleSubmit}>
       <h3>{title}</h3>
       {stepChildren &&
         stepChildren.map((child, index) => (
@@ -45,6 +54,7 @@ const WizardStep = ({
             {...child}
           />
         ))}
+      <button type="submit">Next</button>
     </form>
     <ButtonGroup buttons={buttons} onBack={prevStep} onNext={nextStep} />
   </div>
@@ -53,9 +63,14 @@ const WizardStep = ({
 const FormStep = compose(
   reduxForm({
     form: 'wizard',
-    onSubmit: () => console.log('am dat surmit'),
     destroyOnUnmount: false,
     forceUnregisterOnUnmount: true,
+    validate,
+    onSubmit: (values, dispatch, { nextStep, isFinal }) => {
+      if (!isFinal) {
+        nextStep()
+      }
+    },
   }),
 )(WizardStep)
 
@@ -65,9 +80,6 @@ const Wizard = ({
   step,
   nextStep,
   prevStep,
-  listItems,
-  renderChild,
-  handleSubmit,
   ...rest
 }) => (
   <div className={classnames(classes.container)}>
@@ -78,10 +90,9 @@ const Wizard = ({
     </Steps>
     <FormStep
       {...wizard[step]}
+      isFinal={step === wizard.length - 1}
       nextStep={nextStep}
-      onSubmit={handleSubmit}
       prevStep={prevStep}
-      renderChild={renderChild}
     />
   </div>
 )
@@ -97,8 +108,9 @@ export default compose(
   }),
   withHandlers({
     getSteps: ({ journal: { wizard } }) => () => wizard.map(w => w.label),
-    nextStep: ({ changeStep, journal: { wizard } }) => () =>
-      changeStep(step => (step === wizard.length ? step : step + 1)),
+    nextStep: ({ changeStep, journal: { wizard } }) => () => {
+      changeStep(step => (step === wizard.length - 1 ? step : step + 1))
+    },
     prevStep: ({ changeStep }) => () =>
       changeStep(step => (step <= 0 ? step : step - 1)),
   }),
diff --git a/packages/xpub-faraday/api/db/development/CURRENT b/packages/xpub-faraday/api/db/development/CURRENT
index c16f179ffd3840d2c86f839bb557cbb748255b5b..f405c4b597b9cfe33e2975bb9f3b949cc51f1e95 100644
--- a/packages/xpub-faraday/api/db/development/CURRENT
+++ b/packages/xpub-faraday/api/db/development/CURRENT
@@ -1 +1 @@
-MANIFEST-000156
+MANIFEST-000162
diff --git a/packages/xpub-faraday/api/db/development/LOG b/packages/xpub-faraday/api/db/development/LOG
index 176c0c324df518187da46029e7a9359c63b3b056..3bd35ff65bb432b82574c891a466a521ddb72d69 100644
--- a/packages/xpub-faraday/api/db/development/LOG
+++ b/packages/xpub-faraday/api/db/development/LOG
@@ -1,5 +1,5 @@
-2018/01/12-13:50:08.231595 70000c302000 Recovering log #154
-2018/01/12-13:50:08.232541 70000c302000 Level-0 table #157: started
-2018/01/12-13:50:08.233098 70000c302000 Level-0 table #157: 237 bytes OK
-2018/01/12-13:50:08.233908 70000c302000 Delete type=3 #152
-2018/01/12-13:50:08.234059 70000c302000 Delete type=0 #154
+2018/01/12-14:35:19.911319 70001307d000 Recovering log #161
+2018/01/12-14:35:19.912463 70001307d000 Level-0 table #163: started
+2018/01/12-14:35:19.912996 70001307d000 Level-0 table #163: 237 bytes OK
+2018/01/12-14:35:19.913780 70001307d000 Delete type=3 #159
+2018/01/12-14:35:19.913972 70001307d000 Delete type=0 #161
diff --git a/packages/xpub-faraday/api/db/development/LOG.old b/packages/xpub-faraday/api/db/development/LOG.old
index afc31de34e65db2261ea06d7e6e2f3ec5fc657ec..dfc75080e9e867d524fc28a21bfa1f3dcb6040d8 100644
--- a/packages/xpub-faraday/api/db/development/LOG.old
+++ b/packages/xpub-faraday/api/db/development/LOG.old
@@ -1,14 +1,5 @@
-2018/01/12-13:39:21.891350 70000d8d6000 Recovering log #151
-2018/01/12-13:39:21.892244 70000d8d6000 Level-0 table #153: started
-2018/01/12-13:39:21.892709 70000d8d6000 Level-0 table #153: 237 bytes OK
-2018/01/12-13:39:21.894383 70000d8d6000 Delete type=0 #151
-2018/01/12-13:39:21.894571 70000d8d6000 Delete type=3 #149
-2018/01/12-13:39:21.895409 70000d959000 Compacting 4@0 + 1@1 files
-2018/01/12-13:39:21.896309 70000d959000 Generated table #155@0: 11 keys, 1463 bytes
-2018/01/12-13:39:21.896335 70000d959000 Compacted 4@0 + 1@1 files => 1463 bytes
-2018/01/12-13:39:21.896502 70000d959000 compacted to: files[ 0 1 0 0 0 0 0 ]
-2018/01/12-13:39:21.896617 70000d959000 Delete type=2 #142
-2018/01/12-13:39:21.897278 70000d959000 Delete type=2 #147
-2018/01/12-13:39:21.898247 70000d959000 Delete type=2 #153
-2018/01/12-13:39:21.898532 70000d959000 Delete type=2 #150
-2018/01/12-13:39:21.898768 70000d959000 Delete type=2 #144
+2018/01/12-14:32:13.255236 70000e0f3000 Recovering log #158
+2018/01/12-14:32:13.256323 70000e0f3000 Level-0 table #160: started
+2018/01/12-14:32:13.256930 70000e0f3000 Level-0 table #160: 237 bytes OK
+2018/01/12-14:32:13.258255 70000e0f3000 Delete type=0 #158
+2018/01/12-14:32:13.258600 70000e0f3000 Delete type=3 #156
diff --git a/packages/xpub-faraday/app/config/journal/submit-wizard.js b/packages/xpub-faraday/app/config/journal/submit-wizard.js
index fa278669c8c7fee2c17d0eb1203b250b1c2e5683..03e86b7ec272935061973d882e4efc227570ecb6 100644
--- a/packages/xpub-faraday/app/config/journal/submit-wizard.js
+++ b/packages/xpub-faraday/app/config/journal/submit-wizard.js
@@ -1,8 +1,23 @@
+import React from 'react'
 import { AbstractEditor, TitleEditor } from 'xpub-edit'
-import { Menu, Checkbox, CheckboxGroup, YesOrNo, TextField } from '@pubsweet/ui'
+import {
+  Menu,
+  CheckboxGroup,
+  YesOrNo,
+  TextField,
+  Supplementary,
+} from '@pubsweet/ui'
+import uploadFile from 'xpub-upload'
 
 import { articleSections, articleTypes, declarations } from './'
 
+const yesNoWithLabel = ({ label, ...rest }) => (
+  <div>
+    <label>{label}</label>
+    <YesOrNo {...rest} />
+  </div>
+)
+
 const wizard = [
   {
     label: 'Journal details',
@@ -13,6 +28,7 @@ const wizard = [
         renderComponent: Menu,
         label: 'Journal',
         options: articleTypes,
+        required: true,
       },
       {
         fieldId: 'subject',
@@ -36,11 +52,7 @@ const wizard = [
         action: 'cancel',
       },
       {
-        label: 'Back',
-        action: 'back',
-      },
-      {
-        label: 'Next step >',
+        label: 'Next step',
         action: 'next',
       },
     ],
@@ -63,7 +75,7 @@ const wizard = [
         action: 'back',
       },
       {
-        label: 'Next step >',
+        label: 'Next step',
         action: 'next',
       },
     ],
@@ -102,7 +114,7 @@ const wizard = [
       // },
       {
         fieldId: 'step3-4',
-        renderComponent: YesOrNo,
+        renderComponent: yesNoWithLabel,
         label: 'Is there a potential conflict of interest?',
       },
       {
@@ -117,15 +129,34 @@ const wizard = [
         action: 'back',
       },
       {
-        label: 'Next step >',
+        label: 'Next step',
         action: 'next',
       },
     ],
   },
-  /*
   {
     label: 'Files upload',
     title: 'Manuscript Files Upload',
+    children: [
+      {
+        fieldId: 'mainManuscripts',
+        label: 'Main Manuscript',
+        renderComponent: Supplementary,
+        uploadFile,
+      },
+      {
+        fieldId: 'supplementalFiles',
+        label: 'Supplemental Files',
+        renderComponent: Supplementary,
+        uploadFile,
+      },
+      {
+        fieldId: 'coverLetter',
+        label: 'Cover Letter',
+        renderComponent: Supplementary,
+        uploadFile,
+      },
+    ],
     buttons: [
       {
         label: 'Back',
@@ -137,7 +168,6 @@ const wizard = [
       },
     ],
   },
-  */
 ]
 
 export default wizard