diff --git a/lib/codemirror.css b/lib/codemirror.css
index b962b383740e7fb3eb1d159b99b65e31fd0f844c..b008351a62319f1b5cb9180e42977206e0bea492 100644
--- a/lib/codemirror.css
+++ b/lib/codemirror.css
@@ -119,7 +119,7 @@
 .cm-s-default .cm-property,
 .cm-s-default .cm-operator {}
 .cm-s-default .cm-variable-2 {color: #05a;}
-.cm-s-default .cm-variable-3 {color: #085;}
+.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}
 .cm-s-default .cm-comment {color: #a50;}
 .cm-s-default .cm-string {color: #a11;}
 .cm-s-default .cm-string-2 {color: #f50;}
diff --git a/mode/clike/clike.js b/mode/clike/clike.js
index 4c2acd6cf15844f4eeb139c6183d92dfada26f8c..56c3a05b4f7cb021d4e7fb0dc8e4c59860b65429 100644
--- a/mode/clike/clike.js
+++ b/mode/clike/clike.js
@@ -33,7 +33,7 @@ function popContext(state) {
 }
 
 function typeBefore(stream, state, pos) {
-  if (state.prevToken == "variable" || state.prevToken == "variable-3") return true;
+  if (state.prevToken == "variable" || state.prevToken == "type") return true;
   if (/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(stream.string.slice(0, pos))) return true;
   if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true;
 }
@@ -112,7 +112,7 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
       if (contains(defKeywords, cur)) isDefKeyword = true;
       return "keyword";
     }
-    if (contains(types, cur)) return "variable-3";
+    if (contains(types, cur)) return "type";
     if (contains(builtin, cur)) {
       if (contains(blockKeywords, cur)) curPunc = "newstatement";
       return "builtin";
@@ -281,7 +281,7 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
   }
 
   function pointerHook(_stream, state) {
-    if (state.prevToken == "variable-3") return "variable-3";
+    if (state.prevToken == "type") return "type";
     return false;
   }
 
@@ -774,7 +774,7 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
         return "atom";
       },
       token: function(_stream, state, style) {
-          if ((style == "variable" || style == "variable-3") &&
+          if ((style == "variable" || style == "type") &&
               state.prevToken == ".") {
             return "variable-2";
           }
diff --git a/mode/clike/test.js b/mode/clike/test.js
index 17e652b761725132f12f7d894fb70efd10752b4f..dad2e246ae7bb5c1704d2a0e64f28e05ceaa3e07 100644
--- a/mode/clike/test.js
+++ b/mode/clike/test.js
@@ -6,8 +6,8 @@
   function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
 
   MT("indent",
-     "[variable-3 void] [def foo]([variable-3 void*] [variable a], [variable-3 int] [variable b]) {",
-     "  [variable-3 int] [variable c] [operator =] [variable b] [operator +]",
+     "[type void] [def foo]([type void*] [variable a], [type int] [variable b]) {",
+     "  [type int] [variable c] [operator =] [variable b] [operator +]",
      "    [number 1];",
      "  [keyword return] [operator *][variable a];",
      "}");
@@ -21,9 +21,9 @@
      "}");
 
   MT("def",
-     "[variable-3 void] [def foo]() {}",
+     "[type void] [def foo]() {}",
      "[keyword struct] [def bar]{}",
-     "[variable-3 int] [variable-3 *][def baz]() {}");
+     "[type int] [type *][def baz]() {}");
 
   MT("def_new_line",
      "::[variable std]::[variable SomeTerribleType][operator <][variable T][operator >]",
@@ -37,10 +37,10 @@
 
   MT("preprocessor",
      "[meta #define FOO 3]",
-     "[variable-3 int] [variable foo];",
+     "[type int] [variable foo];",
      "[meta #define BAR\\]",
      "[meta 4]",
-     "[variable-3 unsigned] [variable-3 int] [variable bar] [operator =] [number 8];",
+     "[type unsigned] [type int] [variable bar] [operator =] [number 8];",
      "[meta #include <baz> ][comment // comment]")
 
 
diff --git a/mode/elm/elm.js b/mode/elm/elm.js
index b31e663757364f3f412dcd1efc8e13b4d2d72bd4..9fcfc883717ba6548a57b6f303a5fa1c127b1fdf 100644
--- a/mode/elm/elm.js
+++ b/mode/elm/elm.js
@@ -70,7 +70,7 @@
         if (smallRE.test(ch)) {
           var isDef = source.pos === 1;
           source.eatWhile(idRE);
-          return isDef ? "variable-3" : "variable";
+          return isDef ? "type" : "variable";
         }
 
         if (digitRE.test(ch)) {
diff --git a/mode/javascript/javascript.js b/mode/javascript/javascript.js
index d150d4c7be52f0ff73564648308a9dde15511f2d..c24fafd952984cb95f3aa3d045bc0e4911a5aebd 100644
--- a/mode/javascript/javascript.js
+++ b/mode/javascript/javascript.js
@@ -46,7 +46,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
 
     // Extend the 'normal' keywords with the TypeScript language extensions
     if (isTS) {
-      var type = {type: "variable", style: "variable-3"};
+      var type = {type: "variable", style: "type"};
       var tsKeywords = {
         // object-like things
         "interface": kw("class"),
@@ -543,7 +543,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
     }
   }
   function typeexpr(type) {
-    if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);}
+    if (type == "variable") {cx.marked = "type"; return cont(afterType);}
     if (type == "string" || type == "number" || type == "atom") return cont(afterType);
     if (type == "{") return cont(pushlex("}"), commasep(typeprop, "}", ",;"), poplex, afterType)
     if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType)
diff --git a/mode/javascript/test.js b/mode/javascript/test.js
index bfb238fb7b82c2b3558d50ff4e54a9b02ec147e9..d0f4f96d4a3275fe1dc2ea1c11487098b2528c55 100644
--- a/mode/javascript/test.js
+++ b/mode/javascript/test.js
@@ -238,15 +238,15 @@
   }
 
   TS("typescript_extend_type",
-     "[keyword class] [def Foo] [keyword extends] [variable-3 Some][operator <][variable-3 Type][operator >] {}")
+     "[keyword class] [def Foo] [keyword extends] [type Some][operator <][type Type][operator >] {}")
 
   TS("typescript_arrow_type",
-     "[keyword let] [def x]: ([variable arg]: [variable-3 Type]) [operator =>] [variable-3 ReturnType]")
+     "[keyword let] [def x]: ([variable arg]: [type Type]) [operator =>] [type ReturnType]")
 
   TS("typescript_class",
      "[keyword class] [def Foo] {",
      "  [keyword public] [keyword static] [property main]() {}",
-     "  [keyword private] [property _foo]: [variable-3 string];",
+     "  [keyword private] [property _foo]: [type string];",
      "}")
 
   TS("typescript_literal_types",
@@ -255,85 +255,85 @@
      "  [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
      "  [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
      "}",
-     "[keyword interface] [def MyInstance] [keyword extends] [variable-3 Sequelize].[variable-3 Instance] [operator <] [variable-3 MyAttributes] [operator >] {",
-     "  [property rawAttributes]: [variable-3 MyAttributes];",
+     "[keyword interface] [def MyInstance] [keyword extends] [type Sequelize].[type Instance] [operator <] [type MyAttributes] [operator >] {",
+     "  [property rawAttributes]: [type MyAttributes];",
      "  [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];",
      "  [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];",
      "}")
 
   TS("typescript_extend_operators",
      "[keyword export] [keyword interface] [def UserModel] [keyword extends]",
-     "  [variable-3 Sequelize].[variable-3 Model] [operator <] [variable-3 UserInstance], [variable-3 UserAttributes] [operator >] {",
+     "  [type Sequelize].[type Model] [operator <] [type UserInstance], [type UserAttributes] [operator >] {",
      "    [property findById]: (",
-     "    [variable userId]: [variable-3 number]",
-     "    ) [operator =>] [variable-3 Promise] [operator <] [variable-3 Array] [operator <] { [property id], [property name] } [operator >>];",
+     "    [variable userId]: [type number]",
+     "    ) [operator =>] [type Promise] [operator <] [type Array] [operator <] { [property id], [property name] } [operator >>];",
      "    [property updateById]: (",
-     "    [variable userId]: [variable-3 number],",
-     "    [variable isActive]: [variable-3 boolean]",
-     "    ) [operator =>] [variable-3 Promise] [operator <] [variable-3 AccountHolderNotificationPreferenceInstance] [operator >];",
+     "    [variable userId]: [type number],",
+     "    [variable isActive]: [type boolean]",
+     "    ) [operator =>] [type Promise] [operator <] [type AccountHolderNotificationPreferenceInstance] [operator >];",
      "  }")
 
   TS("typescript_interface_with_const",
      "[keyword const] [def hello]: {",
-     "  [property prop1][operator ?]: [variable-3 string];",
-     "  [property prop2][operator ?]: [variable-3 string];",
+     "  [property prop1][operator ?]: [type string];",
+     "  [property prop2][operator ?]: [type string];",
      "} [operator =] {};")
 
   TS("typescript_double_extend",
      "[keyword export] [keyword interface] [def UserAttributes] {",
-     "  [property id][operator ?]: [variable-3 number];",
-     "  [property createdAt][operator ?]: [variable-3 Date];",
+     "  [property id][operator ?]: [type number];",
+     "  [property createdAt][operator ?]: [type Date];",
      "}",
-     "[keyword export] [keyword interface] [def UserInstance] [keyword extends] [variable-3 Sequelize].[variable-3 Instance][operator <][variable-3 UserAttributes][operator >], [variable-3 UserAttributes] {",
-     "  [property id]: [variable-3 number];",
-     "  [property createdAt]: [variable-3 Date];",
+     "[keyword export] [keyword interface] [def UserInstance] [keyword extends] [type Sequelize].[type Instance][operator <][type UserAttributes][operator >], [type UserAttributes] {",
+     "  [property id]: [type number];",
+     "  [property createdAt]: [type Date];",
      "}");
 
   TS("typescript_index_signature",
      "[keyword interface] [def A] {",
-     "  [[ [variable prop]: [variable-3 string] ]]: [variable-3 any];",
-     "  [property prop1]: [variable-3 any];",
+     "  [[ [variable prop]: [type string] ]]: [type any];",
+     "  [property prop1]: [type any];",
      "}");
 
   TS("typescript_generic_class",
-     "[keyword class] [def Foo][operator <][variable-3 T][operator >] {",
+     "[keyword class] [def Foo][operator <][type T][operator >] {",
      "  [property bar]() {}",
-     "  [property foo](): [variable-3 Foo] {}",
+     "  [property foo](): [type Foo] {}",
      "}")
 
   TS("typescript_type_when_keyword",
-     "[keyword export] [keyword type] [variable-3 AB] [operator =] [variable-3 A] [operator |] [variable-3 B];",
-     "[keyword type] [variable-3 Flags] [operator =] {",
-     "  [property p1]: [variable-3 string];",
-     "  [property p2]: [variable-3 boolean];",
+     "[keyword export] [keyword type] [type AB] [operator =] [type A] [operator |] [type B];",
+     "[keyword type] [type Flags] [operator =] {",
+     "  [property p1]: [type string];",
+     "  [property p2]: [type boolean];",
      "};")
 
   TS("typescript_type_when_not_keyword",
      "[keyword class] [def HasType] {",
-     "  [property type]: [variable-3 string];",
-     "  [property constructor]([def type]: [variable-3 string]) {",
+     "  [property type]: [type string];",
+     "  [property constructor]([def type]: [type string]) {",
      "    [keyword this].[property type] [operator =] [variable-2 type];",
      "  }",
-     "  [property setType]({ [def type] }: { [property type]: [variable-3 string]; }) {",
+     "  [property setType]({ [def type] }: { [property type]: [type string]; }) {",
      "    [keyword this].[property type] [operator =] [variable-2 type];",
      "  }",
      "}")
 
   TS("typescript_function_generics",
      "[keyword function] [def a]() {}",
-     "[keyword function] [def b][operator <][variable-3 IA] [keyword extends] [variable-3 object], [variable-3 IB] [keyword extends] [variable-3 object][operator >]() {}",
+     "[keyword function] [def b][operator <][type IA] [keyword extends] [type object], [type IB] [keyword extends] [type object][operator >]() {}",
      "[keyword function] [def c]() {}")
 
   TS("typescript_complex_return_type",
      "[keyword function] [def A]() {",
      "  [keyword return] [keyword this].[property property];",
      "}",
-     "[keyword function] [def B](): [variable-3 Promise][operator <]{ [[ [variable key]: [variable-3 string] ]]: [variable-3 any] } [operator |] [atom null][operator >] {",
+     "[keyword function] [def B](): [type Promise][operator <]{ [[ [variable key]: [type string] ]]: [type any] } [operator |] [atom null][operator >] {",
      "  [keyword return] [keyword this].[property property];",
      "}")
 
   TS("typescript_complex_type_casting",
-     "[keyword const] [def giftpay] [operator =] [variable config].[property get]([string 'giftpay']) [keyword as] { [[ [variable platformUuid]: [variable-3 string] ]]: { [property version]: [variable-3 number]; [property apiCode]: [variable-3 string]; } };")
+     "[keyword const] [def giftpay] [operator =] [variable config].[property get]([string 'giftpay']) [keyword as] { [[ [variable platformUuid]: [type string] ]]: { [property version]: [type number]; [property apiCode]: [type string]; } };")
 
   var jsonld_mode = CodeMirror.getMode(
     {indentUnit: 2},
diff --git a/mode/jsx/test.js b/mode/jsx/test.js
index c7def5a3eabf4894e5666f8aedd00ef22f6dec03..4a63b4eecaf5f00070ceef3562248a236c09e5a6 100644
--- a/mode/jsx/test.js
+++ b/mode/jsx/test.js
@@ -72,9 +72,9 @@
 
   TS("tsx_react_integration",
      "[keyword interface] [def Props] {",
-     "  [property foo]: [variable-3 string];",
+     "  [property foo]: [type string];",
      "}",
-     "[keyword class] [def MyComponent] [keyword extends] [variable-3 React].[variable-3 Component] [operator <] [variable-3 Props], [variable-3 any] [operator >] {",
+     "[keyword class] [def MyComponent] [keyword extends] [type React].[type Component] [operator <] [type Props], [type any] [operator >] {",
      "  [property render]() {",
      "    [keyword return] [bracket&tag <][tag span][bracket&tag >]{[keyword this].[property props].[property foo]}[bracket&tag </][tag span][bracket&tag >]",
      "  }",
diff --git a/theme/abcdef.css b/theme/abcdef.css
index 7f9d788704efb12d634a7eefe417e4f30ee4ea4a..cf93530946b49faa4039bc85cf1768ca9b42c516 100644
--- a/theme/abcdef.css
+++ b/theme/abcdef.css
@@ -14,7 +14,7 @@
 .cm-s-abcdef span.cm-def { color: #fffabc; }
 .cm-s-abcdef span.cm-variable { color: #abcdef; }
 .cm-s-abcdef span.cm-variable-2 { color: #cacbcc; }
-.cm-s-abcdef span.cm-variable-3 { color: #def; }
+.cm-s-abcdef span.cm-variable-3, .cm-s-abcdef span.cm-type { color: #def; }
 .cm-s-abcdef span.cm-property { color: #fedcba; }
 .cm-s-abcdef span.cm-operator { color: #ff0; }
 .cm-s-abcdef span.cm-comment { color: #7a7b7c; font-style: italic;}
diff --git a/theme/ambiance.css b/theme/ambiance.css
index bce3446494552b5cf1d643ed7fd7f564334b705e..782fca43f52759db5c6352338375814119859707 100644
--- a/theme/ambiance.css
+++ b/theme/ambiance.css
@@ -11,7 +11,7 @@
 .cm-s-ambiance .cm-def { color: #aac6e3; }
 .cm-s-ambiance .cm-variable { color: #ffb795; }
 .cm-s-ambiance .cm-variable-2 { color: #eed1b3; }
-.cm-s-ambiance .cm-variable-3 { color: #faded3; }
+.cm-s-ambiance .cm-variable-3, .cm-s-ambiance .cm-type { color: #faded3; }
 .cm-s-ambiance .cm-property { color: #eed1b3; }
 .cm-s-ambiance .cm-operator { color: #fa8d6a; }
 .cm-s-ambiance .cm-comment { color: #555; font-style:italic; }
diff --git a/theme/cobalt.css b/theme/cobalt.css
index d88223ed8007aacf906014d02d9461cafd6c7fb2..bbbda3b54382afdf7b0cad665dde50720cb26d07 100644
--- a/theme/cobalt.css
+++ b/theme/cobalt.css
@@ -15,7 +15,7 @@
 .cm-s-cobalt span.cm-string { color: #3ad900; }
 .cm-s-cobalt span.cm-meta { color: #ff9d00; }
 .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; }
-.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; }
+.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def, .cm-s-cobalt .cm-type { color: white; }
 .cm-s-cobalt span.cm-bracket { color: #d8d8d8; }
 .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; }
 .cm-s-cobalt span.cm-link { color: #845dc4; }
diff --git a/theme/colorforth.css b/theme/colorforth.css
index 606899f3097261c3bc1a0bbb4fcd293bb3176770..19095e41d98cc16de9436a75117e4eac50e04ca3 100644
--- a/theme/colorforth.css
+++ b/theme/colorforth.css
@@ -15,7 +15,7 @@
 .cm-s-colorforth span.cm-atom        { color: #606060; }
 
 .cm-s-colorforth span.cm-variable-2  { color: #EEE; }
-.cm-s-colorforth span.cm-variable-3  { color: #DDD; }
+.cm-s-colorforth span.cm-variable-3, .cm-s-colorforth span.cm-type { color: #DDD; }
 .cm-s-colorforth span.cm-property    {}
 .cm-s-colorforth span.cm-operator    {}
 
diff --git a/theme/dracula.css b/theme/dracula.css
index 53a660b5219b9f477a1d4e6cabe1c63a5a00054c..253133efe7929edcdb55b6f37e549df3944e42e9 100644
--- a/theme/dracula.css
+++ b/theme/dracula.css
@@ -34,7 +34,7 @@
 .cm-s-dracula span.cm-qualifier { color: #50fa7b; }
 .cm-s-dracula span.cm-property { color: #66d9ef; }
 .cm-s-dracula span.cm-builtin { color: #50fa7b; }
-.cm-s-dracula span.cm-variable-3 { color: #ffb86c; }
+.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }
 
 .cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }
 .cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/theme/duotone-dark.css b/theme/duotone-dark.css
index b09a585c97867305d9ea1e7fc9deb069cb2c46a7..88fdc76c8ea8e80a1cb3aadfb86e67ab9d104958 100644
--- a/theme/duotone-dark.css
+++ b/theme/duotone-dark.css
@@ -24,7 +24,7 @@ CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bra
 .cm-s-duotone-dark span.cm-operator { color: #ffad5c; }
 .cm-s-duotone-dark span.cm-positive { color: #6a51e6; }
 
-.cm-s-duotone-dark span.cm-variable-2, .cm-s-duotone-dark span.cm-variable-3, .cm-s-duotone-dark span.cm-string-2, .cm-s-duotone-dark span.cm-url { color: #7a63ee; }
+.cm-s-duotone-dark span.cm-variable-2, .cm-s-duotone-dark span.cm-variable-3, .cm-s-duotone-dark span.cm-type, .cm-s-duotone-dark span.cm-string-2, .cm-s-duotone-dark span.cm-url { color: #7a63ee; }
 .cm-s-duotone-dark span.cm-def, .cm-s-duotone-dark span.cm-tag, .cm-s-duotone-dark span.cm-builtin, .cm-s-duotone-dark span.cm-qualifier, .cm-s-duotone-dark span.cm-header, .cm-s-duotone-dark span.cm-em { color: #eeebff; }
 .cm-s-duotone-dark span.cm-bracket, .cm-s-duotone-dark span.cm-comment { color: #6c6783; }
 
diff --git a/theme/duotone-light.css b/theme/duotone-light.css
index 80203d15d9a6f62684fdc6a1eba0c6e666de2599..d99480f7c429e811aef606f2b7ab12455ece70e9 100644
--- a/theme/duotone-light.css
+++ b/theme/duotone-light.css
@@ -23,7 +23,7 @@ CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bra
 .cm-s-duotone-light span.cm-string, .cm-s-duotone-light span.cm-operator { color: #1659df; }
 .cm-s-duotone-light span.cm-positive { color: #896724; }
 
-.cm-s-duotone-light span.cm-variable-2, .cm-s-duotone-light span.cm-variable-3, .cm-s-duotone-light span.cm-string-2, .cm-s-duotone-light span.cm-url { color: #896724; }
+.cm-s-duotone-light span.cm-variable-2, .cm-s-duotone-light span.cm-variable-3, .cm-s-duotone-light span.cm-type, .cm-s-duotone-light span.cm-string-2, .cm-s-duotone-light span.cm-url { color: #896724; }
 .cm-s-duotone-light span.cm-def, .cm-s-duotone-light span.cm-tag, .cm-s-duotone-light span.cm-builtin, .cm-s-duotone-light span.cm-qualifier, .cm-s-duotone-light span.cm-header, .cm-s-duotone-light span.cm-em { color: #2d2006; }
 .cm-s-duotone-light span.cm-bracket, .cm-s-duotone-light span.cm-comment { color: #b6ad9a; }
 
diff --git a/theme/eclipse.css b/theme/eclipse.css
index 1bde460e90c737ad3887827877996c855aa55b9e..800d603f6d4fc66970951f303a03914aab974d93 100644
--- a/theme/eclipse.css
+++ b/theme/eclipse.css
@@ -5,7 +5,7 @@
 .cm-s-eclipse span.cm-def { color: #00f; }
 .cm-s-eclipse span.cm-variable { color: black; }
 .cm-s-eclipse span.cm-variable-2 { color: #0000C0; }
-.cm-s-eclipse span.cm-variable-3 { color: #0000C0; }
+.cm-s-eclipse span.cm-variable-3, .cm-s-eclipse span.cm-type { color: #0000C0; }
 .cm-s-eclipse span.cm-property { color: black; }
 .cm-s-eclipse span.cm-operator { color: black; }
 .cm-s-eclipse span.cm-comment { color: #3F7F5F; }
diff --git a/theme/erlang-dark.css b/theme/erlang-dark.css
index 65fe4814c15d5002bc52138f0881144b50b1c290..8c8a4171a6079d22f412a057ffa5e986f51d9004 100644
--- a/theme/erlang-dark.css
+++ b/theme/erlang-dark.css
@@ -27,7 +27,7 @@
 .cm-s-erlang-dark span.cm-tag        { color: #9effff; }
 .cm-s-erlang-dark span.cm-variable   { color: #50fe50; }
 .cm-s-erlang-dark span.cm-variable-2 { color: #e0e; }
-.cm-s-erlang-dark span.cm-variable-3 { color: #ccc; }
+.cm-s-erlang-dark span.cm-variable-3, .cm-s-erlang-dark span.cm-type { color: #ccc; }
 .cm-s-erlang-dark span.cm-error      { color: #9d1e15; }
 
 .cm-s-erlang-dark .CodeMirror-activeline-background { background: #013461; }
diff --git a/theme/icecoder.css b/theme/icecoder.css
index ffebaf2f0b951908c7505415b30ece7d7ec43f93..5440fbe27c85c0c8af46d19c25d44b6be5fd560e 100644
--- a/theme/icecoder.css
+++ b/theme/icecoder.css
@@ -11,7 +11,7 @@ ICEcoder default theme by Matt Pass, used in code editor available at https://ic
 
 .cm-s-icecoder span.cm-variable { color: #6cb5d9; }                /* blue */
 .cm-s-icecoder span.cm-variable-2 { color: #cc1e5c; }              /* pink */
-.cm-s-icecoder span.cm-variable-3 { color: #f9602c; }              /* orange */
+.cm-s-icecoder span.cm-variable-3, .cm-s-icecoder span.cm-type { color: #f9602c; } /* orange */
 
 .cm-s-icecoder span.cm-property { color: #eee; }                   /* off-white 1 */
 .cm-s-icecoder span.cm-operator { color: #9179bb; }                /* purple */
diff --git a/theme/lesser-dark.css b/theme/lesser-dark.css
index 690c183d7b44514b8ec384a89979a72ef18bbed2..b2ec418fdbc4ce2856de7049f26c4a38a6a34690 100644
--- a/theme/lesser-dark.css
+++ b/theme/lesser-dark.css
@@ -27,7 +27,7 @@ Ported to CodeMirror by Peter Kroon
 .cm-s-lesser-dark span.cm-def { color: white; }
 .cm-s-lesser-dark span.cm-variable { color:#D9BF8C; }
 .cm-s-lesser-dark span.cm-variable-2 { color: #669199; }
-.cm-s-lesser-dark span.cm-variable-3 { color: white; }
+.cm-s-lesser-dark span.cm-variable-3, .cm-s-lesser-dark span.cm-type { color: white; }
 .cm-s-lesser-dark span.cm-property { color: #92A75C; }
 .cm-s-lesser-dark span.cm-operator { color: #92A75C; }
 .cm-s-lesser-dark span.cm-comment { color: #666; }
diff --git a/theme/liquibyte.css b/theme/liquibyte.css
index ce0477fe72354dfa74b43a9bb7a626bc8c3f0309..393825e0296a36d6975ab512498263014c9cf084 100644
--- a/theme/liquibyte.css
+++ b/theme/liquibyte.css
@@ -36,7 +36,7 @@
 .cm-s-liquibyte span.cm-atom        { color: #bf3030; font-weight: bold; }
 
 .cm-s-liquibyte span.cm-variable-2  { color: #007f7f; font-weight: bold; }
-.cm-s-liquibyte span.cm-variable-3  { color: #c080ff; font-weight: bold; }
+.cm-s-liquibyte span.cm-variable-3, .cm-s-liquibyte span.cm-type { color: #c080ff; font-weight: bold; }
 .cm-s-liquibyte span.cm-property    { color: #999; font-weight: bold; }
 .cm-s-liquibyte span.cm-operator    { color: #fff; }
 
diff --git a/theme/material.css b/theme/material.css
index 01d867932a137e2c322e57ba06e5c8fe09b9528b..84962a244b71f9eeb938fb9a48e737e220a9b9b6 100644
--- a/theme/material.css
+++ b/theme/material.css
@@ -27,7 +27,7 @@
 .cm-s-material .cm-keyword { color: rgba(199, 146, 234, 1); }
 .cm-s-material .cm-operator { color: rgba(233, 237, 237, 1); }
 .cm-s-material .cm-variable-2 { color: #80CBC4; }
-.cm-s-material .cm-variable-3 { color: #82B1FF; }
+.cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #82B1FF; }
 .cm-s-material .cm-builtin { color: #DECB6B; }
 .cm-s-material .cm-atom { color: #F77669; }
 .cm-s-material .cm-number { color: #F77669; }
@@ -41,7 +41,7 @@
 .cm-s-material .cm-attribute { color: #FFCB6B; }
 .cm-s-material .cm-property { color: #80CBAE; }
 .cm-s-material .cm-qualifier { color: #DECB6B; }
-.cm-s-material .cm-variable-3 { color: #DECB6B; }
+.cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #DECB6B; }
 .cm-s-material .cm-tag { color: rgba(255, 83, 112, 1); }
 .cm-s-material .cm-error {
   color: rgba(255, 255, 255, 1.0);
diff --git a/theme/mdn-like.css b/theme/mdn-like.css
index f325d45005a9920ad0ec61c9e1e05b88a70f9854..622ed3efb74f1bac5c88ef9e624094f105806601 100644
--- a/theme/mdn-like.css
+++ b/theme/mdn-like.css
@@ -21,7 +21,7 @@
 .cm-s-mdn-like .cm-number { color:  #ca7841; }
 .cm-s-mdn-like .cm-def { color: #8DA6CE; }
 .cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; }
-.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def { color: #07a; }
+.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def, .cm-s-mdn-like span.cm-type { color: #07a; }
 
 .cm-s-mdn-like .cm-variable { color: #07a; }
 .cm-s-mdn-like .cm-property { color: #905; }
diff --git a/theme/monokai.css b/theme/monokai.css
index 7c8a4c5d0011624279ecb395a533f67b4a165161..b5edd13fe68af236ff92a19ac928664a62d3c3ca 100644
--- a/theme/monokai.css
+++ b/theme/monokai.css
@@ -21,7 +21,7 @@
 
 .cm-s-monokai span.cm-variable { color: #f8f8f2; }
 .cm-s-monokai span.cm-variable-2 { color: #9effff; }
-.cm-s-monokai span.cm-variable-3 { color: #66d9ef; }
+.cm-s-monokai span.cm-variable-3, .cm-s-monokai span.cm-type { color: #66d9ef; }
 .cm-s-monokai span.cm-def { color: #fd971f; }
 .cm-s-monokai span.cm-bracket { color: #f8f8f2; }
 .cm-s-monokai span.cm-tag { color: #f92672; }
diff --git a/theme/night.css b/theme/night.css
index fd4e5619337e57368e42c3864ccb738c01ebc2fc..f631bf42c748d189c37abb3670dc19bbe7f877ed 100644
--- a/theme/night.css
+++ b/theme/night.css
@@ -17,7 +17,7 @@
 .cm-s-night span.cm-string { color: #37f14a; }
 .cm-s-night span.cm-meta { color: #7678e2; }
 .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; }
-.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; }
+.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def, .cm-s-night span.cm-type { color: white; }
 .cm-s-night span.cm-bracket { color: #8da6ce; }
 .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }
 .cm-s-night span.cm-link { color: #845dc4; }
diff --git a/theme/panda-syntax.css b/theme/panda-syntax.css
index c93b2ea03a76e0d2932cb08d243e5cde3e884593..6de58b56f46cf0bfdab1c04992c36cb2785e00e4 100644
--- a/theme/panda-syntax.css
+++ b/theme/panda-syntax.css
@@ -52,7 +52,7 @@
 .cm-s-panda-syntax .cm-variable-2 {
 	color: #ff9ac1;
 }
-.cm-s-panda-syntax .cm-variable-3 {
+.cm-s-panda-syntax .cm-variable-3, .cm-s-panda-syntax .cm-type {
 	color: #ff9ac1;
 }
 
diff --git a/theme/pastel-on-dark.css b/theme/pastel-on-dark.css
index 2603d36205a2f9c3e37f234194bfb6117d2c9cd5..60435dd15e635114c914329852c80724afdfd059 100644
--- a/theme/pastel-on-dark.css
+++ b/theme/pastel-on-dark.css
@@ -34,7 +34,7 @@
 .cm-s-pastel-on-dark span.cm-string { color: #66A968; }
 .cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; }
 .cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; }
-.cm-s-pastel-on-dark span.cm-variable-3 { color: #DE8E30; }
+.cm-s-pastel-on-dark span.cm-variable-3, .cm-s-pastel-on-dark span.cm-type { color: #DE8E30; }
 .cm-s-pastel-on-dark span.cm-def { color: #757aD8; }
 .cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; }
 .cm-s-pastel-on-dark span.cm-tag { color: #C1C144; }
diff --git a/theme/rubyblue.css b/theme/rubyblue.css
index 76d33e7798fe75e19bda1f1c51f3d61a4eb31b93..1f181b06ec271995f15e4631508e15e984f5343e 100644
--- a/theme/rubyblue.css
+++ b/theme/rubyblue.css
@@ -15,7 +15,7 @@
 .cm-s-rubyblue span.cm-string { color: #F08047; }
 .cm-s-rubyblue span.cm-meta { color: #F0F; }
 .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; }
-.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; }
+.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def, .cm-s-rubyblue span.cm-type { color: white; }
 .cm-s-rubyblue span.cm-bracket { color: #F0F; }
 .cm-s-rubyblue span.cm-link { color: #F4C20B; }
 .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
diff --git a/theme/seti.css b/theme/seti.css
index 6632d3fc7fc48765549a4a741d883000c456a8fd..814f76f7dece86bbade975ad69eeae3d1f101956 100644
--- a/theme/seti.css
+++ b/theme/seti.css
@@ -38,7 +38,7 @@
 .cm-s-seti span.cm-attribute { color: #9fca56; }
 .cm-s-seti span.cm-qualifier { color: #9fca56; }
 .cm-s-seti span.cm-property { color: #a074c4; }
-.cm-s-seti span.cm-variable-3 { color: #9fca56; }
+.cm-s-seti span.cm-variable-3, .cm-s-seti span.cm-type { color: #9fca56; }
 .cm-s-seti span.cm-builtin { color: #9fca56; }
 .cm-s-seti .CodeMirror-activeline-background { background: #101213; }
 .cm-s-seti .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }
diff --git a/theme/solarized.css b/theme/solarized.css
index 1f39c7edb21fd4aa130c46206411633ff1b76508..d95f6c1b27519bcfe20997de3662714c4687e690 100644
--- a/theme/solarized.css
+++ b/theme/solarized.css
@@ -57,7 +57,7 @@ http://ethanschoonover.com/solarized/img/solarized-palette.png
 
 .cm-s-solarized .cm-variable { color: #839496; }
 .cm-s-solarized .cm-variable-2 { color: #b58900; }
-.cm-s-solarized .cm-variable-3 { color: #6c71c4; }
+.cm-s-solarized .cm-variable-3, .cm-s-solarized .cm-type { color: #6c71c4; }
 
 .cm-s-solarized .cm-property { color: #2aa198; }
 .cm-s-solarized .cm-operator { color: #6c71c4; }
diff --git a/theme/the-matrix.css b/theme/the-matrix.css
index 3912a8dbd85adc2622dadefe0f1b06976ce4132c..c4c93c11eafdbbb32c62666be029ec5a74837607 100644
--- a/theme/the-matrix.css
+++ b/theme/the-matrix.css
@@ -14,7 +14,7 @@
 .cm-s-the-matrix span.cm-def { color: #99C; }
 .cm-s-the-matrix span.cm-variable { color: #F6C; }
 .cm-s-the-matrix span.cm-variable-2 { color: #C6F; }
-.cm-s-the-matrix span.cm-variable-3 { color: #96F; }
+.cm-s-the-matrix span.cm-variable-3, .cm-s-the-matrix span.cm-type { color: #96F; }
 .cm-s-the-matrix span.cm-property { color: #62FFA0; }
 .cm-s-the-matrix span.cm-operator { color: #999; }
 .cm-s-the-matrix span.cm-comment { color: #CCCCCC; }
diff --git a/theme/ttcn.css b/theme/ttcn.css
index b3d465645bd5d6d2c2b12b520505ebc53cb849b3..0b14ac35d64f478b643e8d345cd5214ba1ec7bf8 100644
--- a/theme/ttcn.css
+++ b/theme/ttcn.css
@@ -29,7 +29,7 @@
 .cm-s-ttcn .cm-tag { color: #170; }
 .cm-s-ttcn .cm-variable { color: #8B2252; }
 .cm-s-ttcn .cm-variable-2 { color: #05a; }
-.cm-s-ttcn .cm-variable-3 { color: #085; }
+.cm-s-ttcn .cm-variable-3, .cm-s-ttcn .cm-type { color: #085; }
 
 .cm-s-ttcn .cm-invalidchar { color: #f00; }
 
diff --git a/theme/twilight.css b/theme/twilight.css
index d342b899f6ee0069f661306d9607f15289a7764a..b2b1b2aa93e02e669243eb8eec35d1791f11d3a1 100644
--- a/theme/twilight.css
+++ b/theme/twilight.css
@@ -14,7 +14,7 @@
 .cm-s-twilight .cm-number { color:  #ca7841; } /**/
 .cm-s-twilight .cm-def { color: #8DA6CE; }
 .cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/
-.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/
+.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def, .cm-s-twilight span.cm-type { color: #607392; } /**/
 .cm-s-twilight .cm-operator { color: #cda869; } /**/
 .cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/
 .cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/
diff --git a/theme/vibrant-ink.css b/theme/vibrant-ink.css
index ac4ec6d87af286709637406b7721a724cf1bdd10..b13ecf2164bdaf205fe43f062b00a21445537c6e 100644
--- a/theme/vibrant-ink.css
+++ b/theme/vibrant-ink.css
@@ -16,7 +16,7 @@
 .cm-s-vibrant-ink .cm-number { color:  #FFEE98; }
 .cm-s-vibrant-ink .cm-def { color: #8DA6CE; }
 .cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D; }
-.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D; }
+.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def, .cm-s-vibrant span.cm-type { color: #FFC66D; }
 .cm-s-vibrant-ink .cm-operator { color: #888; }
 .cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; }
 .cm-s-vibrant-ink .cm-string { color:  #A5C25C; }
diff --git a/theme/xq-dark.css b/theme/xq-dark.css
index e3bd960bbb72f4722fc5309dab044127cf3c47e7..7da1a0f7053a1458252d43258795c32478139695 100644
--- a/theme/xq-dark.css
+++ b/theme/xq-dark.css
@@ -36,7 +36,7 @@ THE SOFTWARE.
 .cm-s-xq-dark span.cm-def { color: #FFF; text-decoration:underline; }
 .cm-s-xq-dark span.cm-variable { color: #FFF; }
 .cm-s-xq-dark span.cm-variable-2 { color: #EEE; }
-.cm-s-xq-dark span.cm-variable-3 { color: #DDD; }
+.cm-s-xq-dark span.cm-variable-3, .cm-s-xq-dark span.cm-type { color: #DDD; }
 .cm-s-xq-dark span.cm-property {}
 .cm-s-xq-dark span.cm-operator {}
 .cm-s-xq-dark span.cm-comment { color: gray; }
diff --git a/theme/xq-light.css b/theme/xq-light.css
index 8d2fcb667b69a39d099e8877305bae7dfaf455e3..7b182ea99756bff0cb738dce353278a1bcfa9947 100644
--- a/theme/xq-light.css
+++ b/theme/xq-light.css
@@ -26,7 +26,7 @@ THE SOFTWARE.
 .cm-s-xq-light span.cm-def { text-decoration:underline; }
 .cm-s-xq-light span.cm-variable { color: black; }
 .cm-s-xq-light span.cm-variable-2 { color:black; }
-.cm-s-xq-light span.cm-variable-3 { color: black; }
+.cm-s-xq-light span.cm-variable-3, .cm-s-xq-light span.cm-type { color: black; }
 .cm-s-xq-light span.cm-property {}
 .cm-s-xq-light span.cm-operator {}
 .cm-s-xq-light span.cm-comment { color: #0080FF; font-style: italic; }
diff --git a/theme/yeti.css b/theme/yeti.css
index c70d4d214e3008736af3ae8b9305fa194b5eb6d5..d085f7249715623f023656aaa7be03ce4d0c24f3 100644
--- a/theme/yeti.css
+++ b/theme/yeti.css
@@ -39,6 +39,6 @@
 .cm-s-yeti span.cm-qualifier { color: #96c0d8; }
 .cm-s-yeti span.cm-property { color: #a074c4; }
 .cm-s-yeti span.cm-builtin { color: #a074c4; }
-.cm-s-yeti span.cm-variable-3 { color: #96c0d8; }
+.cm-s-yeti span.cm-variable-3, .cm-s-yeti span.cm-type { color: #96c0d8; }
 .cm-s-yeti .CodeMirror-activeline-background { background: #E7E4E0; }
 .cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline; }