diff --git a/packages/component-aws-ses/index.js b/packages/component-aws-ses/index.js
deleted file mode 100644
index b54639e30fd890a999ba73bcf5ab581788aeaa82..0000000000000000000000000000000000000000
--- a/packages/component-aws-ses/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-require('dotenv').config()
-
-module.exports = require('./src/EmailBackend')
diff --git a/packages/component-aws-ses/src/EmailBackend.js b/packages/component-aws-ses/src/EmailBackend.js
deleted file mode 100644
index 5c8682c9d4356ae6e24e0eea80b8985483bd20d4..0000000000000000000000000000000000000000
--- a/packages/component-aws-ses/src/EmailBackend.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const nodemailer = require('nodemailer')
-const config = require('config')
-const logger = require('@pubsweet/logger')
-const AWS = require('aws-sdk')
-
-const mailerConfig = config.get('mailer')
-
-module.exports = {
-  sendEmail: (toEmail, subject, textBody, htmlBody) => {
-    const transporter = nodemailer.createTransport({
-      SES: new AWS.SES({
-        secretAccessKey: process.env.AWS_SES_SECRET_KEY,
-        accessKeyId: process.env.AWS_SES_ACCESS_KEY,
-        region: process.env.AWS_SES_REGION,
-      }),
-    })
-    transporter.sendMail(
-      {
-        from: mailerConfig.from,
-        to: toEmail,
-        subject,
-        text: textBody,
-        html: htmlBody,
-      },
-      (err, info) => {
-        if (err) {
-          logger.error(err)
-        }
-        logger.debug(info)
-      },
-    )
-  },
-}
diff --git a/packages/component-mail-service/package.json b/packages/component-mail-service/package.json
index cf598f847e35150270a8612d6bde0a87bae64a66..cb79ab3a4626231243fd6149417cd338d179da7a 100644
--- a/packages/component-mail-service/package.json
+++ b/packages/component-mail-service/package.json
@@ -18,7 +18,7 @@
   "peerDependencies": {
     "@pubsweet/logger": "^0.0.1",
     "pubsweet-server": "^1.0.1",
-    "@pubsweet/component-aws-ses": "^0.1.0"
+    "@pubsweet/component-send-email": "^0.1.0"
   },
   "publishConfig": {
     "access": "public"
diff --git a/packages/component-mail-service/src/Mail.js b/packages/component-mail-service/src/Mail.js
index 42981c188ba0cc72b56f3cd719c26272f3164388..cbcc4b2db8d718ec75fb899025eae7751b70f65b 100644
--- a/packages/component-mail-service/src/Mail.js
+++ b/packages/component-mail-service/src/Mail.js
@@ -1,7 +1,7 @@
 const fs = require('fs')
 const handlebars = require('handlebars')
 const querystring = require('querystring')
-const SES = require('@pubsweet/component-aws-ses')
+const Email = require('@pubsweet/component-send-email')
 const config = require('config')
 
 const resetUrl = config.get('invite-reset-password.url')
@@ -33,7 +33,7 @@ module.exports = {
     const htmlBody = htmlTemplate(replacements)
     const textBody = textTemplate(replacements)
 
-    SES.sendEmail(email, subject, textBody, htmlBody)
+    Email.send(email, subject, textBody, htmlBody)
   },
 }
 
diff --git a/packages/component-aws-ses/.gitignore b/packages/component-send-email/.gitignore
similarity index 100%
rename from packages/component-aws-ses/.gitignore
rename to packages/component-send-email/.gitignore
diff --git a/packages/component-aws-ses/README.md b/packages/component-send-email/README.md
similarity index 100%
rename from packages/component-aws-ses/README.md
rename to packages/component-send-email/README.md
diff --git a/packages/component-send-email/index.js b/packages/component-send-email/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..638be56beb2320e02d60ee4601a570c689d7ba95
--- /dev/null
+++ b/packages/component-send-email/index.js
@@ -0,0 +1,3 @@
+require('dotenv').config()
+
+module.exports = require('./src/SendEmail')
diff --git a/packages/component-aws-ses/package.json b/packages/component-send-email/package.json
similarity index 56%
rename from packages/component-aws-ses/package.json
rename to packages/component-send-email/package.json
index 4ba5168e166742135891dc8ba4373f404b4c7dfc..abbf0d9257e7efe49f3b7a4b13ad1c9e7bbae14f 100644
--- a/packages/component-aws-ses/package.json
+++ b/packages/component-send-email/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "@pubsweet/component-aws-ses",
+  "name": "@pubsweet/component-send-email",
   "version": "0.2.0",
   "description": "xpub aws ses configured for faraday",
   "license": "MIT",
@@ -13,17 +13,9 @@
   "dependencies": {
     "aws-sdk": "^2.185.0",
     "body-parser": "^1.17.2",
-    "node-mocks-http": "^1.6.6",
     "nodemailer": "^4.4.2"
   },
   "peerDependencies": {
-    "@pubsweet/logger": "^0.0.1",
-    "pubsweet": "^1.1.1",
-    "pubsweet-client": "^1.1.1",
-    "pubsweet-server": "^1.0.1"
-  },
-  "devDependencies": {
-    "jest": "^22.1.1",
-    "supertest": "^3.0.0"
+    "@pubsweet/logger": "^0.0.1"
   }
 }
diff --git a/packages/component-send-email/src/SendEmail.js b/packages/component-send-email/src/SendEmail.js
new file mode 100644
index 0000000000000000000000000000000000000000..42dba99b77913f39d78d4d3b78f8ff66a7147b3d
--- /dev/null
+++ b/packages/component-send-email/src/SendEmail.js
@@ -0,0 +1,25 @@
+const nodemailer = require('nodemailer')
+const logger = require('@pubsweet/logger')
+const config = require('./config')
+
+module.exports = {
+  send: (toEmail, subject, textBody, htmlBody) => {
+    const mailerConfig = config.mailer
+    const transporter = nodemailer.createTransport(mailerConfig.transport)
+    transporter.sendMail(
+      {
+        from: mailerConfig.from,
+        to: toEmail,
+        subject,
+        text: textBody,
+        html: htmlBody,
+      },
+      (err, info) => {
+        if (err) {
+          logger.error(err)
+        }
+        logger.debug(info)
+      },
+    )
+  },
+}
diff --git a/packages/component-send-email/src/config.js b/packages/component-send-email/src/config.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a0e2fcec8b011a955002f6a207eba89245f0aba
--- /dev/null
+++ b/packages/component-send-email/src/config.js
@@ -0,0 +1,14 @@
+const AWS = require('aws-sdk')
+
+module.exports = {
+  mailer: {
+    from: process.env.EMAIL_SENDER,
+    transport: {
+      SES: new AWS.SES({
+        accessKeyId: process.env.AWS_SES_ACCESS_KEY,
+        secretAccessKey: process.env.AWS_SES_SECRET_KEY,
+        region: process.env.AWS_SES_REGION,
+      }),
+    },
+  },
+}
diff --git a/packages/xpub-faraday/package.json b/packages/xpub-faraday/package.json
index 5a394862a73771f994ca598581472b3d3677f5eb..b5f745123b8d861d432231839d87cf365a6a1657 100644
--- a/packages/xpub-faraday/package.json
+++ b/packages/xpub-faraday/package.json
@@ -8,12 +8,13 @@
     "url": "https://gitlab.coko.foundation/xpub/xpub"
   },
   "dependencies": {
-    "aws-sdk": "^2.197.0",
-    "@pubsweet/ui": "^2.0.0",
     "@pubsweet/component-aws-s3": "^0.1.1",
+    "@pubsweet/ui": "^2.0.0",
+    "aws-sdk": "^2.197.0",
     "babel-core": "^6.26.0",
     "config": "^1.26.2",
     "dotenv": "^5.0.0",
+    "flavors": "^3.3.1",
     "font-awesome": "^4.7.0",
     "fs-extra": "^4.0.2",
     "history": "^4.7.2",
@@ -26,16 +27,16 @@
     "pubsweet-client": "^2.1.0",
     "pubsweet-component-ink-backend": "^0.1.1",
     "pubsweet-component-ink-frontend": "^1.0.0",
+    "pubsweet-component-invite": "^0.0.1",
     "pubsweet-component-login": "^1.0.1",
     "pubsweet-component-signup": "^1.0.0",
     "pubsweet-component-xpub-manuscript": "^0.0.2",
     "pubsweet-server": "^1.0.1",
-    "pubsweet-component-invite": "^0.0.1",
     "react": "^16.2.0",
-    "react-dom": "^16.2.0",
-    "react-router-dom": "^4.2.2",
     "react-dnd": "^2.5.4",
     "react-dnd-html5-backend": "^2.5.4",
+    "react-dom": "^16.2.0",
+    "react-router-dom": "^4.2.2",
     "recompose": "^0.26.0",
     "redux": "^3.6.0",
     "redux-form": "^7.0.3",
diff --git a/yarn.lock b/yarn.lock
index 17a9872bc795a46e40d990c3e2a83bfadcf21904..14345b9125fd10ff008a377e7cf4aa427d6469f6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2981,6 +2981,10 @@ deep-is@~0.1.3:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
 
+deepmerge@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.0.1.tgz#25c1c24f110fb914f80001b925264dd77f3f4312"
+
 default-require-extensions@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
@@ -4257,6 +4261,12 @@ flatten@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
 
+flavors@^3.3.1:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/flavors/-/flavors-3.3.1.tgz#352baa433b4d6875474509612596ca95b9b7c81d"
+  dependencies:
+    deepmerge "^2.0.1"
+
 flush-write-stream@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417"