diff --git a/lib/js/review/SubmitController.js b/lib/js/review/SubmitController.js
index 3cc6983..61ae790 100644
--- a/lib/js/review/SubmitController.js
+++ b/lib/js/review/SubmitController.js
@@ -153,9 +153,8 @@ var SubmitController = function (_React$Component) {
           onChange: function onChange(value) {
             return _this2.props.setPreSubmit(preSubmit.field, value);
           },
-          checked: form.data[preSubmit.field],
+          checked: form.data[preSubmit.field] || false,
           showError: showPreSubmitError }),
-        ' }',
         _react2.default.createElement(_SubmitButtons2.default, {
           onBack: this.goBack,
           onSubmit: this.handleSubmit,
diff --git a/lib/js/review/SubmitController.js.map b/lib/js/review/SubmitController.js.map
index 85707a7..6e8f56c 100644
--- a/lib/js/review/SubmitController.js.map
+++ b/lib/js/review/SubmitController.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../../src/js/review/SubmitController.jsx"],"names":["SubmitController","getPreSubmit","required","field","label","error","formConfig","preSubmitInfo","goBack","props","form","pageList","router","expandedPageList","data","push","length","path","handleSubmit","pagesByChapter","trackingPrefix","preSubmit","setSubmission","isValid","errors","event","Raven","captureMessage","extra","prefix","submitForm","nextProps","nextStatus","submission","status","previousStatus","newRoute","urlPrefix","showPreSubmitError","renderErrorMessage","setPreSubmit","value","React","Component","mapStateToProps","state","ownProps","hasAttemptedSubmit","mapDispatchToProps","propTypes","PropTypes","object","isRequired","array","func","string"],"mappings":"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","file":"SubmitController.js","sourcesContent":["import React from 'react';\nimport Raven from 'raven-js';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\n\nimport SubmitButtons from './SubmitButtons';\nimport { PreSubmitSection } from '../components/PreSubmitSection';\nimport { isValidForm } from '../validation';\nimport {\n  createPageListByChapter,\n  getActiveExpandedPages,\n  recordEvent\n} from '../helpers';\nimport {\n  setPreSubmit,\n  setSubmission,\n  submitForm\n} from '../actions';\n\nclass SubmitController extends React.Component {\n\n  componentWillReceiveProps(nextProps) {\n    const nextStatus = nextProps.form.submission.status;\n    const previousStatus = this.props.form.submission.status;\n    if (nextStatus !== previousStatus && nextStatus === 'applicationSubmitted') {\n      const newRoute = `${nextProps.formConfig.urlPrefix}confirmation`;\n      this.props.router.push(newRoute);\n    }\n  }\n\n  getPreSubmit = formConfig => {\n    return {\n      required: false,\n      field: 'AGREED',\n      label: 'I agree to the terms and conditions.',\n      error: 'You must accept the agreement before submitting.',\n      ...formConfig.preSubmitInfo\n    };\n  }\n\n  goBack = () => {\n    const {\n      form,\n      pageList,\n      router\n    } = this.props;\n\n    const expandedPageList = getActiveExpandedPages(pageList, form.data);\n\n    // TODO: Fix this bug that assumes there is a confirmation page.\n    // Actually, it assumes the app also doesn't add routes at the end!\n    // A component at this level should not need to know these things!\n    router.push(expandedPageList[expandedPageList.length - 2].path);\n  }\n\n  handleSubmit = () => {\n    const {\n      form,\n      formConfig,\n      pagesByChapter,\n      trackingPrefix\n    } = this.props;\n\n    // If a pre-submit agreement is required, make sure it was accepted\n    const preSubmit = this.getPreSubmit(formConfig);\n    if (preSubmit.required && !form.data[preSubmit.field]) {\n      this.props.setSubmission('hasAttemptedSubmit', true);\n      // <PreSubmitSection/> is displaying an error for this case\n      return;\n    }\n\n    // Validation errors in this situation are not visible, so we’d\n    // like to know if they’re common\n    const { isValid, errors } = isValidForm(form, pagesByChapter);\n    if (!isValid) {\n      recordEvent({\n        event: `${trackingPrefix}-validation-failed`,\n      });\n      Raven.captureMessage('Validation issue not displayed', {\n        extra: {\n          errors,\n          prefix: trackingPrefix\n        }\n      });\n      this.props.setSubmission('status', 'validationError');\n      this.props.setSubmission('hasAttemptedSubmit', true);\n      return;\n    }\n\n    // User accepted if required, and no errors, so submit\n    this.props.submitForm(formConfig, form);\n  }\n\n  render() {\n    const {\n      form,\n      formConfig,\n      showPreSubmitError,\n      renderErrorMessage\n    } = this.props;\n    const preSubmit = this.getPreSubmit(formConfig);\n\n    return (\n      <div>\n        <PreSubmitSection\n          preSubmitInfo={preSubmit}\n          onChange={value => this.props.setPreSubmit(preSubmit.field, value)}\n          checked={form.data[preSubmit.field]}\n          showError={showPreSubmitError}/> }\n        <SubmitButtons\n          onBack={this.goBack}\n          onSubmit={this.handleSubmit}\n          submission={form.submission}\n          renderErrorMessage={renderErrorMessage}/>\n      </div>\n    );\n  }\n}\n\nfunction mapStateToProps(state, ownProps) {\n  const {\n    formConfig,\n    pageList,\n    renderErrorMessage\n  } = ownProps;\n  const router = ownProps.router;\n\n  const form = state.form;\n  const pagesByChapter = createPageListByChapter(formConfig);\n  const trackingPrefix = formConfig.trackingPrefix;\n  const submission = form.submission;\n  const showPreSubmitError = submission.hasAttemptedSubmit;\n\n  return {\n    form,\n    formConfig,\n    pagesByChapter,\n    pageList,\n    renderErrorMessage,\n    router,\n    submission,\n    showPreSubmitError,\n    trackingPrefix\n  };\n}\n\nconst mapDispatchToProps = {\n  setPreSubmit,\n  setSubmission,\n  submitForm\n};\n\nSubmitController.propTypes = {\n  form: PropTypes.object.isRequired,\n  formConfig: PropTypes.object.isRequired,\n  pagesByChapter: PropTypes.object.isRequired,\n  pageList: PropTypes.array.isRequired,\n  renderErrorMessage: PropTypes.func,\n  router: PropTypes.object.isRequired,\n  setPreSubmit: PropTypes.func.isRequired,\n  setSubmission: PropTypes.func.isRequired,\n  submitForm: PropTypes.func.isRequired,\n  submission: PropTypes.object.isRequired,\n  trackingPrefix: PropTypes.string.isRequired\n};\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(SubmitController));\n\n// for tests\nexport { SubmitController };\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../../src/js/review/SubmitController.jsx"],"names":["SubmitController","getPreSubmit","required","field","label","error","formConfig","preSubmitInfo","goBack","props","form","pageList","router","expandedPageList","data","push","length","path","handleSubmit","pagesByChapter","trackingPrefix","preSubmit","setSubmission","isValid","errors","event","Raven","captureMessage","extra","prefix","submitForm","nextProps","nextStatus","submission","status","previousStatus","newRoute","urlPrefix","showPreSubmitError","renderErrorMessage","setPreSubmit","value","React","Component","mapStateToProps","state","ownProps","hasAttemptedSubmit","mapDispatchToProps","propTypes","PropTypes","object","isRequired","array","func","string"],"mappings":"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","file":"SubmitController.js","sourcesContent":["import React from 'react';\nimport Raven from 'raven-js';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\n\nimport SubmitButtons from './SubmitButtons';\nimport { PreSubmitSection } from '../components/PreSubmitSection';\nimport { isValidForm } from '../validation';\nimport {\n  createPageListByChapter,\n  getActiveExpandedPages,\n  recordEvent\n} from '../helpers';\nimport {\n  setPreSubmit,\n  setSubmission,\n  submitForm\n} from '../actions';\n\nclass SubmitController extends React.Component {\n\n  componentWillReceiveProps(nextProps) {\n    const nextStatus = nextProps.form.submission.status;\n    const previousStatus = this.props.form.submission.status;\n    if (nextStatus !== previousStatus && nextStatus === 'applicationSubmitted') {\n      const newRoute = `${nextProps.formConfig.urlPrefix}confirmation`;\n      this.props.router.push(newRoute);\n    }\n  }\n\n  getPreSubmit = formConfig => {\n    return {\n      required: false,\n      field: 'AGREED',\n      label: 'I agree to the terms and conditions.',\n      error: 'You must accept the agreement before submitting.',\n      ...formConfig.preSubmitInfo\n    };\n  }\n\n  goBack = () => {\n    const {\n      form,\n      pageList,\n      router\n    } = this.props;\n\n    const expandedPageList = getActiveExpandedPages(pageList, form.data);\n\n    // TODO: Fix this bug that assumes there is a confirmation page.\n    // Actually, it assumes the app also doesn't add routes at the end!\n    // A component at this level should not need to know these things!\n    router.push(expandedPageList[expandedPageList.length - 2].path);\n  }\n\n  handleSubmit = () => {\n    const {\n      form,\n      formConfig,\n      pagesByChapter,\n      trackingPrefix\n    } = this.props;\n\n    // If a pre-submit agreement is required, make sure it was accepted\n    const preSubmit = this.getPreSubmit(formConfig);\n    if (preSubmit.required && !form.data[preSubmit.field]) {\n      this.props.setSubmission('hasAttemptedSubmit', true);\n      // <PreSubmitSection/> is displaying an error for this case\n      return;\n    }\n\n    // Validation errors in this situation are not visible, so we’d\n    // like to know if they’re common\n    const { isValid, errors } = isValidForm(form, pagesByChapter);\n    if (!isValid) {\n      recordEvent({\n        event: `${trackingPrefix}-validation-failed`,\n      });\n      Raven.captureMessage('Validation issue not displayed', {\n        extra: {\n          errors,\n          prefix: trackingPrefix\n        }\n      });\n      this.props.setSubmission('status', 'validationError');\n      this.props.setSubmission('hasAttemptedSubmit', true);\n      return;\n    }\n\n    // User accepted if required, and no errors, so submit\n    this.props.submitForm(formConfig, form);\n  }\n\n  render() {\n    const {\n      form,\n      formConfig,\n      showPreSubmitError,\n      renderErrorMessage\n    } = this.props;\n    const preSubmit = this.getPreSubmit(formConfig);\n\n    return (\n      <div>\n        <PreSubmitSection\n          preSubmitInfo={preSubmit}\n          onChange={value => this.props.setPreSubmit(preSubmit.field, value)}\n          checked={form.data[preSubmit.field] || false}\n          showError={showPreSubmitError}/>\n        <SubmitButtons\n          onBack={this.goBack}\n          onSubmit={this.handleSubmit}\n          submission={form.submission}\n          renderErrorMessage={renderErrorMessage}/>\n      </div>\n    );\n  }\n}\n\nfunction mapStateToProps(state, ownProps) {\n  const {\n    formConfig,\n    pageList,\n    renderErrorMessage\n  } = ownProps;\n  const router = ownProps.router;\n\n  const form = state.form;\n  const pagesByChapter = createPageListByChapter(formConfig);\n  const trackingPrefix = formConfig.trackingPrefix;\n  const submission = form.submission;\n  const showPreSubmitError = submission.hasAttemptedSubmit;\n\n  return {\n    form,\n    formConfig,\n    pagesByChapter,\n    pageList,\n    renderErrorMessage,\n    router,\n    submission,\n    showPreSubmitError,\n    trackingPrefix\n  };\n}\n\nconst mapDispatchToProps = {\n  setPreSubmit,\n  setSubmission,\n  submitForm\n};\n\nSubmitController.propTypes = {\n  form: PropTypes.object.isRequired,\n  formConfig: PropTypes.object.isRequired,\n  pagesByChapter: PropTypes.object.isRequired,\n  pageList: PropTypes.array.isRequired,\n  renderErrorMessage: PropTypes.func,\n  router: PropTypes.object.isRequired,\n  setPreSubmit: PropTypes.func.isRequired,\n  setSubmission: PropTypes.func.isRequired,\n  submitForm: PropTypes.func.isRequired,\n  submission: PropTypes.object.isRequired,\n  trackingPrefix: PropTypes.string.isRequired\n};\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(SubmitController));\n\n// for tests\nexport { SubmitController };\n"]}
\ No newline at end of file