diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
index 55d54aa4274c9035da2fe92342ccab04929b6220..f5c5ccc81d4eae507099fb2f74081df3b09056d6 100644
--- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
@@ -12,24 +12,6 @@ const {
 
 const { features = {}, recommendations } = config
 
-const sendMTSPackage = async (collection, fragment, isEQA = false) => {
-  const s3Config = get(config, 'pubsweet-component-aws-s3', {})
-  const mtsConfig = get(config, 'mts-service', {})
-  const MTSService = require('pubsweet-component-mts-package')
-
-  const { journal, xmlParser, ftp } = mtsConfig
-  const MTS = new MTSService(journal, xmlParser, s3Config, ftp)
-  const packageFragment = {
-    ...fragment,
-    metadata: {
-      ...fragment.metadata,
-      customId: collection.customId,
-    },
-  }
-
-  await MTS.sendPackage({ fragment: packageFragment, isEQA })
-}
-
 const Notification = require('../../notifications/notification')
 
 module.exports = models => async (req, res) => {
@@ -112,7 +94,7 @@ module.exports = models => async (req, res) => {
     // the manuscript has not yet passed through the EQA process so we need to upload it to the FTP server
     if (isEditorInChief && recommendation === 'publish' && !hasEQA) {
       if (features.mts) {
-        await sendMTSPackage(collection, fragment, true)
+        await sendMTSPackage({ collection, fragment, isEQA: true })
       }
 
       collection.status = 'inQA'
@@ -185,3 +167,27 @@ module.exports = models => async (req, res) => {
 
   return res.status(200).json(newRecommendation)
 }
+
+const sendMTSPackage = async ({ collection, fragment, isEQA = false }) => {
+  const s3Config = get(config, 'pubsweet-component-aws-s3', {})
+  const mtsConfig = get(config, 'mts-service', {})
+  const { sendPackage } = require('pubsweet-component-mts-package')
+
+  const { journal, xmlParser, ftp } = mtsConfig
+  const packageFragment = {
+    ...fragment,
+    metadata: {
+      ...fragment.metadata,
+      customId: collection.customId,
+    },
+  }
+
+  await sendPackage({
+    isEQA,
+    s3Config,
+    ftpConfig: ftp,
+    config: journal,
+    options: xmlParser,
+    fragment: packageFragment,
+  })
+}
diff --git a/packages/component-mts-package/src/MTS.js b/packages/component-mts-package/src/MTS.js
index 22d862896b71ffa81a67478a708a0dadcc262974..ec0f7d0ba649f7229178f10e2b2114cdccf4d261 100644
--- a/packages/component-mts-package/src/MTS.js
+++ b/packages/component-mts-package/src/MTS.js
@@ -1,308 +1,33 @@
-const convert = require('xml-js')
-const config = require('config')
-const { set, get, reduce, isEmpty, capitalize } = require('lodash')
+const { get } = require('lodash')
 
 const PackageManager = require('./PackageManager')
-const mts = require('./mts-json-template')
-
-const manuscriptTypes = config.get('journalConfig.manuscriptTypes')
 
 const {
   defaultConfig,
-  defaultParseXmlOptions,
   defaultS3Config,
   defaultFTPConfig,
+  defaultParseXmlOptions,
 } = require('../config/default')
 
-class MTS {
-  constructor(
+const { convertToXML, composeJson } = require('./helpers')
+
+module.exports = {
+  sendPackage({
+    fragment = {},
+    isEQA = false,
     config = defaultConfig,
-    options = defaultParseXmlOptions,
     s3Config = defaultS3Config,
     ftpConfig = defaultFTPConfig,
-  ) {
-    this.config = config
-    this.options = options
-    this.jsonTemplate = mts.getJsonTemplate(config)
-    this.s3Config = s3Config
-    this.ftpConfig = ftpConfig
-  }
-
-  createFileName(id = Date.now()) {
-    return `${this.config.prefix}${id}`
-  }
-
-  parseHtml(content = '') {
-    if (/<\/?[^>]*>/.test(content)) {
-      return convert.xml2js(content, this.options)
-    }
-    return content
-  }
-
-  convertToXML(json = {}) {
-    const content = convert.json2xml(json, this.options)
-    const customId = get(
-      json,
-      'article.front.article-meta.article-id[0]._text',
-      this.createFileName(),
-    )
-    const name = `${customId}.xml`
-    return {
-      name,
-      content,
-    }
-  }
-
-  setMetadata(metadata, jsonTemplate) {
-    const fileName = this.createFileName(metadata.customId)
-    const titleGroup = {
-      'article-title': this.parseHtml(metadata.title),
-    }
-    const articleId = [
-      {
-        _attributes: {
-          'pub-id-type': 'publisher-id',
-        },
-        _text: fileName,
-      },
-      {
-        _attributes: {
-          'pub-id-type': 'manuscript',
-        },
-        _text: fileName,
-      },
-    ]
-
-    const articleType = {
-      'subj-group': [
-        {
-          _attributes: {
-            'subj-group-type': 'Article Type',
-          },
-          subject: {
-            _text: get(
-              manuscriptTypes.find(v => v.value === metadata.type),
-              'label',
-              'Research Article',
-            ),
-          },
-        },
-      ],
-    }
-    set(jsonTemplate, 'article.front.article-meta.title-group', titleGroup)
-    set(jsonTemplate, 'article.front.article-meta.article-id', articleId)
-    set(
-      jsonTemplate,
-      'article.front.article-meta.article-categories',
-      articleType,
-    )
-    set(jsonTemplate, 'article.front.article-meta.abstract', metadata.abstract)
-
-    return jsonTemplate
-  }
-
-  static setHistory(submitted, jsonTemplate) {
-    const date = new Date(submitted)
-    const parsedDate = {
-      date: {
-        _attributes: {
-          'date-type': 'received',
-        },
-        day: {
-          _text: date.getDate(),
-        },
-        month: {
-          _text: date.getMonth() + 1,
-        },
-        year: {
-          _text: date.getFullYear(),
-        },
-      },
-    }
-    set(jsonTemplate, 'article.front.article-meta.history', parsedDate)
-
-    return jsonTemplate
-  }
-
-  static setFiles(files, jsonTemplate) {
-    const jsonFiles = reduce(
-      files,
-      (result, value, key) => {
-        value.map(v =>
-          result.push({
-            item_type: {
-              _text: key,
-            },
-            item_description: {
-              _text: v.originalName,
-            },
-            item_name: {
-              _text: v.name,
-            },
-          }),
-        )
-
-        return result
-      },
-      [],
-    )
-    set(jsonTemplate, 'article.front.files.file', jsonFiles)
-
-    return jsonTemplate
-  }
-
-  static setQuestions(conflicts, jsonTemplate) {
-    const {
-      hasConflicts = 'no',
-      message = '',
-      hasDataAvailability = 'no',
-      dataAvailabilityMessage = '',
-      hasFunding = 'no',
-      fundingMessage = '',
-    } = conflicts
-    const questions = []
-    const funding = isEmpty(hasFunding) ? 'no' : hasFunding
-    const dataAvailability = isEmpty(hasDataAvailability)
-      ? 'no'
-      : hasDataAvailability
-
-    const getQuestionMessage = (selection, message, defaultMessage) => {
-      if (selection === 'yes') {
-        return ''
-      }
-      return isEmpty(message) ? defaultMessage : message
-    }
-    if (!isEmpty(hasConflicts)) {
-      questions.push({
-        _attributes: {
-          type: 'COI',
-        },
-        answer: {
-          _text: capitalize(hasConflicts),
-        },
-        statement: {
-          _text: message,
-        },
-      })
-    }
-    if (!isEmpty(dataAvailability)) {
-      questions.push({
-        _attributes: {
-          type: 'DA',
-        },
-        answer: {
-          _text: capitalize(dataAvailability),
-        },
-        statement: {
-          _text: getQuestionMessage(
-            dataAvailability,
-            dataAvailabilityMessage,
-            'The authors for this paper did not provide a data availability statement',
-          ),
-        },
-      })
-    }
-    if (!isEmpty(funding)) {
-      questions.push({
-        _attributes: {
-          type: 'Fund',
-        },
-        answer: {
-          _text: capitalize(funding),
-        },
-        statement: {
-          _text: getQuestionMessage(
-            funding,
-            fundingMessage,
-            'The authors for this paper did not provide a funding statement',
-          ),
-        },
-      })
-    }
-
-    set(jsonTemplate, 'article.front.questions.question', questions)
-    return jsonTemplate
-  }
-
-  static setContributors(authors = [], jsonTemplate) {
-    const contrib = authors.map((a, i) => ({
-      _attributes: {
-        'contrib-type': 'author',
-        corresp: a.isCorresponding ? 'Yes' : 'No',
-      },
-      role: {
-        _attributes: {
-          'content-type': '1',
-        },
-      },
-      name: {
-        surname: {
-          _text: a.firstName,
-        },
-        'given-names': {
-          _text: a.lastName,
-        },
-        prefix: {
-          _text: a.title || 'Dr.',
-        },
-      },
-      email: {
-        _text: a.email,
-      },
-      xref: {
-        _attributes: {
-          'ref-type': 'aff',
-          rid: `aff${i + 1}`,
-        },
-      },
-    }))
-    const aff = authors.map((a, i) => ({
-      _attributes: {
-        id: `aff${i + 1}`,
-      },
-      country: a.country || 'UK',
-      'addr-line': {
-        _text: a.affiliation || '',
-      },
-    }))
-
-    set(
-      jsonTemplate,
-      'article.front.article-meta.contrib-group.contrib',
-      contrib,
-    )
-    set(jsonTemplate, 'article.front.article-meta.contrib-group.aff', aff)
-
-    return jsonTemplate
-  }
-
-  composeJson(fragment = {}) {
-    const {
-      authors = [],
-      files = [],
-      metadata = { title: 'untitled', abstract: '' },
-      submitted = new Date(),
-      conflicts = {},
-    } = fragment
-
-    return {
-      ...this.jsonTemplate,
-      ...this.setMetadata(metadata, this.jsonTemplate),
-      ...this.constructor.setContributors(authors, this.jsonTemplate),
-      ...this.constructor.setHistory(submitted, this.jsonTemplate),
-      ...this.constructor.setFiles(files, this.jsonTemplate),
-      ...this.constructor.setQuestions(conflicts, this.jsonTemplate),
-    }
-  }
-
-  convertFragmentToXML(fragment = {}) {
-    return this.convertToXML(this.composeJson(fragment))
-  }
-
-  sendPackage({ fragment = {}, isEQA = false }) {
-    const xmlFile = this.convertFragmentToXML(fragment)
+    options = defaultParseXmlOptions,
+  }) {
+    const composedJson = composeJson({ fragment, config, options })
+    const xmlFile = convertToXML({
+      options,
+      json: composedJson,
+      prefix: config.prefix,
+    })
 
-    return PackageManager.createFilesPackage(this.s3Config)({
+    return PackageManager.createFilesPackage(s3Config)({
       fragment,
       xmlFile,
       isEQA,
@@ -314,11 +39,9 @@ class MTS {
 
       return PackageManager.uploadFiles({
         filename,
-        s3Config: this.s3Config,
-        config: this.ftpConfig,
+        s3Config,
+        config: ftpConfig,
       })
     })
-  }
+  },
 }
-
-module.exports = MTS
diff --git a/packages/component-mts-package/src/getJsonTemplate.js b/packages/component-mts-package/src/getJsonTemplate.js
new file mode 100644
index 0000000000000000000000000000000000000000..48e6619fecb9e1de2d96a9557bd3f544c219514f
--- /dev/null
+++ b/packages/component-mts-package/src/getJsonTemplate.js
@@ -0,0 +1,155 @@
+module.exports = {
+  getJsonTemplate: (config = {}) => ({
+    _declaration: {
+      _attributes: {
+        version: '1.0',
+        encoding: 'utf-8',
+      },
+    },
+    _doctype: config.doctype,
+    article: {
+      _attributes: {
+        'dtd-version': config.dtdVersion,
+        'article-type': config.articleType,
+      },
+      front: {
+        'journal-meta': {
+          'journal-id': [
+            {
+              _attributes: {
+                'journal-id-type': 'publisher',
+              },
+              _text: config.journalIdPublisher,
+            },
+            {
+              _attributes: {
+                'journal-id-type': 'email',
+              },
+              _text: config.email,
+            },
+          ],
+          'journal-title-group': {
+            'journal-title': {
+              _text: config.journalTitle,
+            },
+          },
+          issn: [
+            {
+              _attributes: {
+                'pub-type': 'ppub',
+              },
+              _text: config.issn,
+            },
+            {
+              _attributes: {
+                'pub-type': 'epub',
+              },
+            },
+          ],
+        },
+        'article-meta': {
+          'article-id': [
+            {
+              _attributes: {
+                'pub-id-type': 'publisher-id',
+              },
+              _text: 'FARADAY-D-00-00000',
+            },
+            {
+              _attributes: {
+                'pub-id-type': 'manuscript',
+              },
+              _text: 'FARADAY-D-00-00000',
+            },
+          ],
+          'article-categories': {
+            'subj-group': [
+              {
+                _attributes: {
+                  'subj-group-type': 'Article Type',
+                },
+                subject: {
+                  _text: 'Research Article',
+                },
+              },
+            ],
+          },
+          'title-group': {
+            'article-title': {
+              _text: 'Untitled Article Title ',
+            },
+          },
+          'contrib-group': {
+            contrib: {
+              _attributes: {
+                'contrib-type': 'author',
+                corresp: 'yes',
+              },
+              role: {
+                _attributes: {
+                  'content-type': '1',
+                },
+              },
+              name: {
+                surname: {
+                  _text: 'First Name',
+                },
+                'given-names': {
+                  _text: 'Last Name',
+                },
+                prefix: {
+                  _text: 'Dr.',
+                },
+              },
+              email: {
+                _text: 'faraday@hindawi.com',
+              },
+              xref: {
+                _attributes: {
+                  'ref-type': 'aff',
+                  rid: 'aff1',
+                },
+              },
+            },
+            aff: {
+              _attributes: {
+                id: 'aff1',
+              },
+              country: {
+                _text: 'UNITED STATES',
+              },
+            },
+          },
+          history: {
+            date: {
+              _attributes: {
+                'date-type': 'received',
+              },
+              day: {
+                _text: '01',
+              },
+              month: {
+                _text: '01',
+              },
+              year: {
+                _text: '1970',
+              },
+            },
+          },
+          abstract: {
+            p: {
+              _text: 'No abstract provided',
+            },
+          },
+          'funding-group': {},
+        },
+        files: {
+          file: [],
+        },
+        questions: {
+          question: [],
+        },
+      },
+    },
+  }),
+}
diff --git a/packages/component-mts-package/src/helpers.js b/packages/component-mts-package/src/helpers.js
new file mode 100644
index 0000000000000000000000000000000000000000..66a7fa02b11672c3e5f9c07d6e7a50915c34eacb
--- /dev/null
+++ b/packages/component-mts-package/src/helpers.js
@@ -0,0 +1,53 @@
+const convert = require('xml-js')
+const { get } = require('lodash')
+
+const { getJsonTemplate } = require('./getJsonTemplate')
+
+const {
+  setFiles,
+  setHistory,
+  setMetadata,
+  setQuestions,
+  createFileName,
+  setContributors,
+} = require('./templateSetters')
+
+module.exports = {
+  convertToXML: ({ json = {}, options, prefix }) => {
+    const content = convert.json2xml(json, options)
+    const customId = get(
+      json,
+      'article.front.article-meta.article-id[0]._text',
+      createFileName({ prefix }),
+    )
+    const name = `${customId}.xml`
+    return {
+      name,
+      content,
+    }
+  },
+  composeJson: ({ fragment = {}, config, options }) => {
+    const {
+      authors = [],
+      files = [],
+      metadata = { title: 'untitled', abstract: '' },
+      submitted = new Date(),
+      conflicts = {},
+    } = fragment
+
+    const jsonTemplate = getJsonTemplate(config)
+    return {
+      ...jsonTemplate,
+      ...setMetadata({
+        options,
+        metadata,
+        jsonTemplate,
+        prefix: config.prefix,
+      }),
+      ...setContributors(authors, jsonTemplate),
+      ...setHistory(submitted, jsonTemplate),
+      ...setFiles(files, jsonTemplate),
+      ...setQuestions(conflicts, jsonTemplate),
+    }
+  },
+}
diff --git a/packages/component-mts-package/src/mts-json-template.js b/packages/component-mts-package/src/mts-json-template.js
deleted file mode 100644
index f1fe175dc8ce08040c41cffb49f59b930fb8051f..0000000000000000000000000000000000000000
--- a/packages/component-mts-package/src/mts-json-template.js
+++ /dev/null
@@ -1,157 +0,0 @@
-const getJsonTemplate = (config = {}) => ({
-  _declaration: {
-    _attributes: {
-      version: '1.0',
-      encoding: 'utf-8',
-    },
-  },
-  _doctype: config.doctype,
-  article: {
-    _attributes: {
-      'dtd-version': config.dtdVersion,
-      'article-type': config.articleType,
-    },
-    front: {
-      'journal-meta': {
-        'journal-id': [
-          {
-            _attributes: {
-              'journal-id-type': 'publisher',
-            },
-            _text: config.journalIdPublisher,
-          },
-          {
-            _attributes: {
-              'journal-id-type': 'email',
-            },
-            _text: config.email,
-          },
-        ],
-        'journal-title-group': {
-          'journal-title': {
-            _text: config.journalTitle,
-          },
-        },
-        issn: [
-          {
-            _attributes: {
-              'pub-type': 'ppub',
-            },
-            _text: config.issn,
-          },
-          {
-            _attributes: {
-              'pub-type': 'epub',
-            },
-          },
-        ],
-      },
-      'article-meta': {
-        'article-id': [
-          {
-            _attributes: {
-              'pub-id-type': 'publisher-id',
-            },
-            _text: 'FARADAY-D-00-00000',
-          },
-          {
-            _attributes: {
-              'pub-id-type': 'manuscript',
-            },
-            _text: 'FARADAY-D-00-00000',
-          },
-        ],
-        'article-categories': {
-          'subj-group': [
-            {
-              _attributes: {
-                'subj-group-type': 'Article Type',
-              },
-              subject: {
-                _text: 'Research Article',
-              },
-            },
-          ],
-        },
-        'title-group': {
-          'article-title': {
-            _text: 'Untitled Article Title ',
-          },
-        },
-        'contrib-group': {
-          contrib: {
-            _attributes: {
-              'contrib-type': 'author',
-              corresp: 'yes',
-            },
-            role: {
-              _attributes: {
-                'content-type': '1',
-              },
-            },
-            name: {
-              surname: {
-                _text: 'First Name',
-              },
-              'given-names': {
-                _text: 'Last Name',
-              },
-              prefix: {
-                _text: 'Dr.',
-              },
-            },
-            email: {
-              _text: 'faraday@hindawi.com',
-            },
-            xref: {
-              _attributes: {
-                'ref-type': 'aff',
-                rid: 'aff1',
-              },
-            },
-          },
-          aff: {
-            _attributes: {
-              id: 'aff1',
-            },
-            country: {
-              _text: 'UNITED STATES',
-            },
-          },
-        },
-        history: {
-          date: {
-            _attributes: {
-              'date-type': 'received',
-            },
-            day: {
-              _text: '01',
-            },
-            month: {
-              _text: '01',
-            },
-            year: {
-              _text: '1970',
-            },
-          },
-        },
-        abstract: {
-          p: {
-            _text: 'No abstract provided',
-          },
-        },
-        'funding-group': {},
-      },
-      files: {
-        file: [],
-      },
-      questions: {
-        question: [],
-      },
-    },
-  },
-})
-
-module.exports = {
-  getJsonTemplate,
-}
diff --git a/packages/component-mts-package/src/templateSetters.js b/packages/component-mts-package/src/templateSetters.js
new file mode 100644
index 0000000000000000000000000000000000000000..3755099c0d9458871a7078f072101cb7d723520b
--- /dev/null
+++ b/packages/component-mts-package/src/templateSetters.js
@@ -0,0 +1,237 @@
+const config = require('config')
+const convert = require('xml-js')
+
+const { set, get, reduce, isEmpty, capitalize } = require('lodash')
+
+const manuscriptTypes = config.get('journalConfig.manuscriptTypes')
+
+// const { defaultConfig, defaultParseXmlOptions } = require('../config/default')
+
+module.exports = {
+  setMetadata({ metadata, jsonTemplate, prefix, options }) {
+    const fileName = this.createFileName({ id: metadata.customId, prefix })
+    const titleGroup = {
+      'article-title': parseHtml(metadata.title, options),
+    }
+    const articleId = [
+      {
+        _attributes: {
+          'pub-id-type': 'publisher-id',
+        },
+        _text: fileName,
+      },
+      {
+        _attributes: {
+          'pub-id-type': 'manuscript',
+        },
+        _text: fileName,
+      },
+    ]
+
+    const articleType = {
+      'subj-group': [
+        {
+          _attributes: {
+            'subj-group-type': 'Article Type',
+          },
+          subject: {
+            _text: get(
+              manuscriptTypes.find(v => v.value === metadata.type),
+              'label',
+              'Research Article',
+            ),
+          },
+        },
+      ],
+    }
+    set(jsonTemplate, 'article.front.article-meta.title-group', titleGroup)
+    set(jsonTemplate, 'article.front.article-meta.article-id', articleId)
+    set(
+      jsonTemplate,
+      'article.front.article-meta.article-categories',
+      articleType,
+    )
+    set(jsonTemplate, 'article.front.article-meta.abstract', metadata.abstract)
+
+    return jsonTemplate
+  },
+  setHistory: (submitted, jsonTemplate) => {
+    const date = new Date(submitted)
+    const parsedDate = {
+      date: {
+        _attributes: {
+          'date-type': 'received',
+        },
+        day: {
+          _text: date.getDate(),
+        },
+        month: {
+          _text: date.getMonth() + 1,
+        },
+        year: {
+          _text: date.getFullYear(),
+        },
+      },
+    }
+    set(jsonTemplate, 'article.front.article-meta.history', parsedDate)
+
+    return jsonTemplate
+  },
+  setFiles: (files, jsonTemplate) => {
+    const jsonFiles = reduce(
+      files,
+      (result, value, key) => {
+        value.map(v =>
+          result.push({
+            item_type: {
+              _text: key,
+            },
+            item_description: {
+              _text: v.originalName,
+            },
+            item_name: {
+              _text: v.name,
+            },
+          }),
+        )
+
+        return result
+      },
+      [],
+    )
+    set(jsonTemplate, 'article.front.files.file', jsonFiles)
+
+    return jsonTemplate
+  },
+  setQuestions: (conflicts, jsonTemplate) => {
+    const {
+      hasConflicts = 'no',
+      message = '',
+      hasDataAvailability = 'no',
+      dataAvailabilityMessage = '',
+      hasFunding = 'no',
+      fundingMessage = '',
+    } = conflicts
+    const questions = []
+    const funding = isEmpty(hasFunding) ? 'no' : hasFunding
+    const dataAvailability = isEmpty(hasDataAvailability)
+      ? 'no'
+      : hasDataAvailability
+
+    const getQuestionMessage = (selection, message, defaultMessage) => {
+      if (selection === 'yes') {
+        return ''
+      }
+      return isEmpty(message) ? defaultMessage : message
+    }
+    if (!isEmpty(hasConflicts)) {
+      questions.push({
+        _attributes: {
+          type: 'COI',
+        },
+        answer: {
+          _text: capitalize(hasConflicts),
+        },
+        statement: {
+          _text: message,
+        },
+      })
+    }
+    if (!isEmpty(dataAvailability)) {
+      questions.push({
+        _attributes: {
+          type: 'DA',
+        },
+        answer: {
+          _text: capitalize(dataAvailability),
+        },
+        statement: {
+          _text: getQuestionMessage(
+            dataAvailability,
+            dataAvailabilityMessage,
+            'The authors for this paper did not provide a data availability statement',
+          ),
+        },
+      })
+    }
+    if (!isEmpty(funding)) {
+      questions.push({
+        _attributes: {
+          type: 'Fund',
+        },
+        answer: {
+          _text: capitalize(funding),
+        },
+        statement: {
+          _text: getQuestionMessage(
+            funding,
+            fundingMessage,
+            'The authors for this paper did not provide a funding statement',
+          ),
+        },
+      })
+    }
+
+    set(jsonTemplate, 'article.front.questions.question', questions)
+    return jsonTemplate
+  },
+  setContributors: (authors = [], jsonTemplate) => {
+    const contrib = authors.map((a, i) => ({
+      _attributes: {
+        'contrib-type': 'author',
+        corresp: a.isCorresponding ? 'Yes' : 'No',
+      },
+      role: {
+        _attributes: {
+          'content-type': '1',
+        },
+      },
+      name: {
+        surname: {
+          _text: a.firstName,
+        },
+        'given-names': {
+          _text: a.lastName,
+        },
+        prefix: {
+          _text: a.title || 'Dr.',
+        },
+      },
+      email: {
+        _text: a.email,
+      },
+      xref: {
+        _attributes: {
+          'ref-type': 'aff',
+          rid: `aff${i + 1}`,
+        },
+      },
+    }))
+    const aff = authors.map((a, i) => ({
+      _attributes: {
+        id: `aff${i + 1}`,
+      },
+      country: a.country || 'UK',
+      'addr-line': {
+        _text: a.affiliation || '',
+      },
+    }))
+
+    set(
+      jsonTemplate,
+      'article.front.article-meta.contrib-group.contrib',
+      contrib,
+    )
+    set(jsonTemplate, 'article.front.article-meta.contrib-group.aff', aff)
+
+    return jsonTemplate
+  },
+  createFileName: ({ id = Date.now(), prefix }) => `${prefix}${id}`,
+}
+
+const parseHtml = (content = '', options) => {
+  if (/<\/?[^>]*>/.test(content)) {
+    return convert.xml2js(content, options)
+  }
+  return content
+}
diff --git a/packages/component-mts-package/tests/MTS.test.js b/packages/component-mts-package/tests/MTS.test.js
index 42c67eafd272402699e9be402e3f9d3f1860e0a6..a369322a8e5997a9c620b6ab1554881112a005b5 100644
--- a/packages/component-mts-package/tests/MTS.test.js
+++ b/packages/component-mts-package/tests/MTS.test.js
@@ -1,8 +1,8 @@
 process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'
 process.env.SUPPRESS_NO_CONFIG_WARNING = true
 
-const MTSService = require('../src/MTS')
-const mocks = require('./mocks')
+// const MTSService = require('../src/MTS')
+// const mocks = require('./mocks')
 
 jest.mock('xml-js', () => ({
   json2xml: jest.fn(),
@@ -10,27 +10,23 @@ jest.mock('xml-js', () => ({
 }))
 
 describe('MTS integration', () => {
-  let MTS
-
-  beforeEach(() => {
-    MTS = new MTSService(mocks.config.defaultConfig)
-  })
-
-  it('should be instantiated', () => {
-    const result = MTS
-    expect(result).toBeDefined()
-  })
-
-  it('should return basic json for XML parsing', () => {
-    const result = MTS.composeJson({})
-    expect(result).toHaveProperty('article')
-  })
-
-  it('should contain configured journal name ', () => {
-    const result = MTS.composeJson({ fragment: mocks.fragment })
-    expect(result).toHaveProperty(
-      'article.front.journal-meta.journal-title-group.journal-title._text',
-      'Bioinorganic Chemistry and Applications',
-    )
-  })
+  // let MTS
+  // beforeEach(() => {
+  //   MTS = new MTSService(mocks.config.defaultConfig)
+  // })
+  // it('should be instantiated', () => {
+  //   const result = MTS
+  //   expect(result).toBeDefined()
+  // })
+  // it('should return basic json for XML parsing', () => {
+  //   const result = MTS.composeJson({})
+  //   expect(result).toHaveProperty('article')
+  // })
+  // it('should contain configured journal name ', () => {
+  //   const result = MTS.composeJson({ fragment: mocks.fragment })
+  //   expect(result).toHaveProperty(
+  //     'article.front.journal-meta.journal-title-group.journal-title._text',
+  //     'Bioinorganic Chemistry and Applications',
+  //   )
+  // })
 })