diff --git a/services/drone/drone-build.service.js b/services/drone/drone-build.service.js
index b89fe14a50bff627caff56ca9e851ff5b712fac8..4d52f6549a8576f98f27162b6850c04c43f343d7 100644
--- a/services/drone/drone-build.service.js
+++ b/services/drone/drone-build.service.js
@@ -16,72 +16,58 @@ const queryParamSchema = Joi.object({
 }).required()
 
 module.exports = class DroneBuild extends BaseJsonService {
-  static get category() {
-    return 'build'
+  static category = 'build'
+  static route = {
+    base: 'drone/build',
+    pattern: ':user/:repo/:branch*',
+    queryParamSchema,
   }
 
-  static get route() {
-    return {
-      queryParamSchema,
-      base: 'drone/build',
-      pattern: ':user/:repo/:branch*',
-    }
-  }
-
-  static get auth() {
-    return { passKey: 'drone_token', serviceKey: 'drone' }
-  }
-
-  static get examples() {
-    return [
-      {
-        title: 'Drone (cloud)',
-        pattern: ':user/:repo',
-        namedParams: {
-          user: 'drone',
-          repo: 'drone',
-        },
-        staticPreview: renderBuildStatusBadge({ status: 'success' }),
+  static auth = { passKey: 'drone_token', serviceKey: 'drone' }
+  static examples = [
+    {
+      title: 'Drone (cloud)',
+      pattern: ':user/:repo',
+      namedParams: {
+        user: 'drone',
+        repo: 'drone',
       },
-      {
-        title: 'Drone (cloud) with branch',
-        pattern: ':user/:repo/:branch',
-        namedParams: {
-          user: 'drone',
-          repo: 'drone',
-          branch: 'master',
-        },
-        staticPreview: renderBuildStatusBadge({ status: 'success' }),
+      staticPreview: renderBuildStatusBadge({ status: 'success' }),
+    },
+    {
+      title: 'Drone (cloud) with branch',
+      pattern: ':user/:repo/:branch',
+      namedParams: {
+        user: 'drone',
+        repo: 'drone',
+        branch: 'master',
       },
-      {
-        title: 'Drone (self-hosted)',
-        pattern: ':user/:repo',
-        queryParams: { server: 'https://drone.shields.io' },
-        namedParams: {
-          user: 'badges',
-          repo: 'shields',
-        },
-        staticPreview: renderBuildStatusBadge({ status: 'success' }),
+      staticPreview: renderBuildStatusBadge({ status: 'success' }),
+    },
+    {
+      title: 'Drone (self-hosted)',
+      pattern: ':user/:repo',
+      queryParams: { server: 'https://drone.shields.io' },
+      namedParams: {
+        user: 'badges',
+        repo: 'shields',
       },
-      {
-        title: 'Drone (self-hosted) with branch',
-        pattern: ':user/:repo/:branch',
-        queryParams: { server: 'https://drone.shields.io' },
-        namedParams: {
-          user: 'badges',
-          repo: 'shields',
-          branch: 'feat/awesome-thing',
-        },
-        staticPreview: renderBuildStatusBadge({ status: 'success' }),
+      staticPreview: renderBuildStatusBadge({ status: 'success' }),
+    },
+    {
+      title: 'Drone (self-hosted) with branch',
+      pattern: ':user/:repo/:branch',
+      queryParams: { server: 'https://drone.shields.io' },
+      namedParams: {
+        user: 'badges',
+        repo: 'shields',
+        branch: 'feat/awesome-thing',
       },
-    ]
-  }
+      staticPreview: renderBuildStatusBadge({ status: 'success' }),
+    },
+  ]
 
-  static get defaultBadgeData() {
-    return {
-      label: 'build',
-    }
-  }
+  static defaultBadgeData = { label: 'build' }
 
   async handle({ user, repo, branch }, { server = 'https://cloud.drone.io' }) {
     const json = await this._requestJson(
diff --git a/services/dub/dub-download.service.js b/services/dub/dub-download.service.js
index 1fff5668273d356a2219b3f376182c471ee01196..218d6116bd6ef8c9695ff622bfef4f461dd23097 100644
--- a/services/dub/dub-download.service.js
+++ b/services/dub/dub-download.service.js
@@ -35,56 +35,47 @@ const intervalMap = {
 }
 
 module.exports = class DubDownloads extends BaseJsonService {
-  static get category() {
-    return 'downloads'
+  static category = 'downloads'
+  static route = {
+    base: 'dub',
+    pattern: ':interval(dd|dw|dm|dt)/:packageName/:version*',
   }
 
-  static get route() {
-    return {
-      base: 'dub',
-      pattern: ':interval(dd|dw|dm|dt)/:packageName/:version*',
-    }
-  }
-
-  static get examples() {
-    return [
-      {
-        title: 'DUB',
-        namedParams: { interval: 'dm', packageName: 'vibe-d' },
-        staticPreview: this.render({ interval: 'dm', downloadCount: 5000 }),
+  static examples = [
+    {
+      title: 'DUB',
+      namedParams: { interval: 'dm', packageName: 'vibe-d' },
+      staticPreview: this.render({ interval: 'dm', downloadCount: 5000 }),
+    },
+    {
+      title: 'DUB (version)',
+      namedParams: {
+        interval: 'dm',
+        packageName: 'vibe-d',
+        version: '0.8.4',
       },
-      {
-        title: 'DUB (version)',
-        namedParams: {
-          interval: 'dm',
-          packageName: 'vibe-d',
-          version: '0.8.4',
-        },
-        staticPreview: this.render({
-          interval: 'dm',
-          version: '0.8.4',
-          downloadCount: 100,
-        }),
+      staticPreview: this.render({
+        interval: 'dm',
+        version: '0.8.4',
+        downloadCount: 100,
+      }),
+    },
+    {
+      title: 'DUB (latest)',
+      namedParams: {
+        interval: 'dm',
+        packageName: 'vibe-d',
+        version: 'latest',
       },
-      {
-        title: 'DUB (latest)',
-        namedParams: {
-          interval: 'dm',
-          packageName: 'vibe-d',
-          version: 'latest',
-        },
-        staticPreview: this.render({
-          interval: 'dm',
-          version: 'latest',
-          downloadCount: 100,
-        }),
-      },
-    ]
-  }
+      staticPreview: this.render({
+        interval: 'dm',
+        version: 'latest',
+        downloadCount: 100,
+      }),
+    },
+  ]
 
-  static get defaultBadgeData() {
-    return { label: 'downloads' }
-  }
+  static defaultBadgeData = { label: 'downloads' }
 
   static render({ interval, version, downloadCount }) {
     const { messageSuffix } = intervalMap[interval]
diff --git a/services/dub/dub-license.service.js b/services/dub/dub-license.service.js
index 3a68c843f73a85a5eec6d9d8e2d27c44f4e8be87..6574f8f239eca2c94259a816cd4e3c18277252f8 100644
--- a/services/dub/dub-license.service.js
+++ b/services/dub/dub-license.service.js
@@ -9,30 +9,17 @@ const schema = Joi.object({
 })
 
 module.exports = class DubLicense extends BaseJsonService {
-  static get category() {
-    return 'license'
-  }
-
-  static get route() {
-    return {
-      base: 'dub/l',
-      pattern: ':packageName',
-    }
-  }
-
-  static get examples() {
-    return [
-      {
-        title: 'DUB',
-        namedParams: { packageName: 'vibe-d' },
-        staticPreview: renderLicenseBadge({ licenses: ['MIT'] }),
-      },
-    ]
-  }
-
-  static get defaultBadgeData() {
-    return { label: 'license' }
-  }
+  static category = 'license'
+  static route = { base: 'dub/l', pattern: ':packageName' }
+  static examples = [
+    {
+      title: 'DUB',
+      namedParams: { packageName: 'vibe-d' },
+      staticPreview: renderLicenseBadge({ licenses: ['MIT'] }),
+    },
+  ]
+
+  static defaultBadgeData = { label: 'license' }
 
   async fetch({ packageName }) {
     return this._requestJson({
diff --git a/services/dub/dub-version.service.js b/services/dub/dub-version.service.js
index 33cbb90454a1fe4cccd165a679bb8bca3b4975c3..83931f4ea5175d0c7ff747f1ecb2a7f6a3a68c76 100644
--- a/services/dub/dub-version.service.js
+++ b/services/dub/dub-version.service.js
@@ -7,30 +7,17 @@ const { BaseJsonService } = require('..')
 const schema = Joi.string().required()
 
 module.exports = class DubVersion extends BaseJsonService {
-  static get category() {
-    return 'version'
-  }
-
-  static get route() {
-    return {
-      base: 'dub/v',
-      pattern: ':packageName',
-    }
-  }
-
-  static get examples() {
-    return [
-      {
-        title: 'DUB',
-        namedParams: { packageName: 'vibe-d' },
-        staticPreview: renderVersionBadge({ version: 'v0.8.4' }),
-      },
-    ]
-  }
-
-  static get defaultBadgeData() {
-    return { label: 'dub' }
-  }
+  static category = 'version'
+  static route = { base: 'dub/v', pattern: ':packageName' }
+  static examples = [
+    {
+      title: 'DUB',
+      namedParams: { packageName: 'vibe-d' },
+      staticPreview: renderVersionBadge({ version: 'v0.8.4' }),
+    },
+  ]
+
+  static defaultBadgeData = { label: 'dub' }
 
   async fetch({ packageName }) {
     return this._requestJson({
diff --git a/services/dynamic/dynamic-json.service.js b/services/dynamic/dynamic-json.service.js
index 2d9ced69e96be6a2e6962a4bb80e465c0eef8ac8..337fe66d2ded018d57d3939c089df92c7d9fdff3 100644
--- a/services/dynamic/dynamic-json.service.js
+++ b/services/dynamic/dynamic-json.service.js
@@ -6,13 +6,8 @@ const { createRoute } = require('./dynamic-helpers')
 const jsonPath = require('./json-path')
 
 module.exports = class DynamicJson extends jsonPath(BaseJsonService) {
-  static get enabledMetrics() {
-    return [MetricNames.SERVICE_RESPONSE_SIZE]
-  }
-
-  static get route() {
-    return createRoute('json')
-  }
+  static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE]
+  static route = createRoute('json')
 
   async fetch({ schema, url, errorMessages }) {
     return this._requestJson({
diff --git a/services/dynamic/dynamic-xml.service.js b/services/dynamic/dynamic-xml.service.js
index 2867f1566c3489484e1979e8f152c331e280e9c6..9c14c59649740949cc45c7ae8c4090bb813796d6 100644
--- a/services/dynamic/dynamic-xml.service.js
+++ b/services/dynamic/dynamic-xml.service.js
@@ -14,23 +14,10 @@ const { createRoute } = require('./dynamic-helpers')
 // JSON parser and write the queries in jsonpath instead. Then eventually
 // deprecate the old version.
 module.exports = class DynamicXml extends BaseService {
-  static get category() {
-    return 'dynamic'
-  }
-
-  static get enabledMetrics() {
-    return [MetricNames.SERVICE_RESPONSE_SIZE]
-  }
-
-  static get route() {
-    return createRoute('xml')
-  }
-
-  static get defaultBadgeData() {
-    return {
-      label: 'custom badge',
-    }
-  }
+  static category = 'dynamic'
+  static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE]
+  static route = createRoute('xml')
+  static defaultBadgeData = { label: 'custom badge' }
 
   transform({ pathExpression, buffer }) {
     // e.g. //book[2]/@id
diff --git a/services/dynamic/dynamic-yaml.service.js b/services/dynamic/dynamic-yaml.service.js
index 9e96ada0a2a1d435d1bc52ba1d123c84c6a0e5e4..a77471708606b6bb122f606caefc8503a4354229 100644
--- a/services/dynamic/dynamic-yaml.service.js
+++ b/services/dynamic/dynamic-yaml.service.js
@@ -6,13 +6,8 @@ const { createRoute } = require('./dynamic-helpers')
 const jsonPath = require('./json-path')
 
 module.exports = class DynamicYaml extends jsonPath(BaseYamlService) {
-  static get enabledMetrics() {
-    return [MetricNames.SERVICE_RESPONSE_SIZE]
-  }
-
-  static get route() {
-    return createRoute('yaml')
-  }
+  static enabledMetrics = [MetricNames.SERVICE_RESPONSE_SIZE]
+  static route = createRoute('yaml')
 
   async fetch({ schema, url, errorMessages }) {
     return this._requestYaml({
diff --git a/services/dynamic/json-path.js b/services/dynamic/json-path.js
index 2a5a3652d215207c923b75b614188b0cf2b9bd3e..2ef0af988a753d78be8e9d848850cd0cfbc0a83a 100644
--- a/services/dynamic/json-path.js
+++ b/services/dynamic/json-path.js
@@ -17,15 +17,8 @@ const { InvalidParameter, InvalidResponse } = require('..')
  */
 module.exports = superclass =>
   class extends superclass {
-    static get category() {
-      return 'dynamic'
-    }
-
-    static get defaultBadgeData() {
-      return {
-        label: 'custom badge',
-      }
-    }
+    static category = 'dynamic'
+    static defaultBadgeData = { label: 'custom badge' }
 
     /**
      * Request data from an upstream API, transform it to JSON and validate against a schema