diff --git a/wax-prosemirror-components/package.json b/wax-prosemirror-components/package.json
index 0e144b1f2f636a1c51648ee1f382af8ffcd9297d..50878775a4bf21664620da28fa2ff53983c444e9 100644
--- a/wax-prosemirror-components/package.json
+++ b/wax-prosemirror-components/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror UI components",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"
diff --git a/wax-prosemirror-core/package.json b/wax-prosemirror-core/package.json
index 482e31200da77b3168c26fce296b702305d909e8..2bc7a5ffdec27aa4fd45ec4c7b35dde377936d1f 100644
--- a/wax-prosemirror-core/package.json
+++ b/wax-prosemirror-core/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror core",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"
diff --git a/wax-prosemirror-layouts/package.json b/wax-prosemirror-layouts/package.json
index d753bac203f052523bfe769ecf6a429c14675b3b..d32477de5d2c02bc3fec949d44476830665d4140 100644
--- a/wax-prosemirror-layouts/package.json
+++ b/wax-prosemirror-layouts/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror layouts",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"
diff --git a/wax-prosemirror-plugins/package.json b/wax-prosemirror-plugins/package.json
index c60d16ece4aa385d5af951fc49ab1fc042030423..e57c59288f9cd52ffa80453fbd2601160759cee1 100644
--- a/wax-prosemirror-plugins/package.json
+++ b/wax-prosemirror-plugins/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror plugins",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"
diff --git a/wax-prosemirror-schema/index.js b/wax-prosemirror-schema/index.js
index 5a1ac5c336f78b7ba1d1f1d15c0ade1292e8065e..d821cda25f31af100d0d6f5cd35b7b4acc9068fd 100644
--- a/wax-prosemirror-schema/index.js
+++ b/wax-prosemirror-schema/index.js
@@ -1,42 +1,43 @@
 /*
 LIST OF SUPPORTED MARKS
 */
-export { default as codeMark } from "./src/marks/codeMark";
-export { default as strongMark } from "./src/marks/strongMark";
-export { default as linkMark } from "./src/marks/linkMark";
-export { default as emphasisMark } from "./src/marks/emphasisMark";
-export { default as subscriptMark } from "./src/marks/subscriptMark";
-export { default as superscriptMark } from "./src/marks/superscriptMark";
-export { default as strikethroughMark } from "./src/marks/strikethroughMark";
-export { default as underlineMark } from "./src/marks/underlineMark";
-export { default as smallcapsMark } from "./src/marks/smallcapsMark";
-export { default as sourceMark } from "./src/marks/sourceMark";
-export { default as commentMark } from "./src/marks/commentMark";
+export { default as codeMark } from './src/marks/codeMark';
+export { default as strongMark } from './src/marks/strongMark';
+export { default as linkMark } from './src/marks/linkMark';
+export { default as emphasisMark } from './src/marks/emphasisMark';
+export { default as subscriptMark } from './src/marks/subscriptMark';
+export { default as superscriptMark } from './src/marks/superscriptMark';
+export { default as strikethroughMark } from './src/marks/strikethroughMark';
+export { default as underlineMark } from './src/marks/underlineMark';
+export { default as smallcapsMark } from './src/marks/smallcapsMark';
+export { default as sourceMark } from './src/marks/sourceMark';
+export { default as commentMark } from './src/marks/commentMark';
 /*
 LIST OF TRACK CHANGES MARKS
 */
-export { default as trackChangesMarks } from "./src/marks/trackChangesMarks";
+export { default as trackChangesMarks } from './src/marks/trackChangesMarks';
 
 /*
 LIST OF SUPPORTED NODES
 */
-export { default as authorNode } from "./src/nodes/authorNode";
-export { default as epigraphPoetryNode } from "./src/nodes/epigraphPoetryNode";
-export { default as epigraphProseNode } from "./src/nodes/epigraphProseNode";
-export { default as sourceNoteNode } from "./src/nodes/sourceNoteNode";
-export { default as paragraphContNode } from "./src/nodes/paragraphContNode";
-export { default as extractProseNode } from "./src/nodes/extractProseNode";
-export { default as extractPoetryNode } from "./src/nodes/extractPoetryNode";
-export { default as titleNode } from "./src/nodes/titleNode";
-export { default as orderedListNode } from "./src/nodes/orderedListNode";
-export { default as bulletListNode } from "./src/nodes/bulletListNode";
-export { default as listItemNode } from "./src/nodes/listItemNode";
-export { default as subTitleNode } from "./src/nodes/subTitleNode";
-export { default as imageNode } from "./src/nodes/imageNode";
-export { default as headingNode } from "./src/nodes/headingNode";
-export { default as blockQuoteNode } from "./src/nodes/blockQuoteNode";
-export { default as footNoteNode } from "./src/nodes/footNoteNode";
+export { default as authorNode } from './src/nodes/authorNode';
+export { default as epigraphPoetryNode } from './src/nodes/epigraphPoetryNode';
+export { default as epigraphProseNode } from './src/nodes/epigraphProseNode';
+export { default as sourceNoteNode } from './src/nodes/sourceNoteNode';
+export { default as paragraphContNode } from './src/nodes/paragraphContNode';
+export { default as extractProseNode } from './src/nodes/extractProseNode';
+export { default as extractPoetryNode } from './src/nodes/extractPoetryNode';
+export { default as titleNode } from './src/nodes/titleNode';
+export { default as orderedListNode } from './src/nodes/orderedListNode';
+export { default as bulletListNode } from './src/nodes/bulletListNode';
+export { default as listItemNode } from './src/nodes/listItemNode';
+export { default as subTitleNode } from './src/nodes/subTitleNode';
+export { default as imageNode } from './src/nodes/imageNode';
+export { default as headingNode } from './src/nodes/headingNode';
+export { default as blockQuoteNode } from './src/nodes/blockQuoteNode';
+export { default as footNoteNode } from './src/nodes/footNoteNode';
+export { default as codeBlockNode } from './src/nodes/codeBlockNode';
 /*
 LIST OF TRACK CHANGES NODES
 */
-export { default as trackChangesNodes } from "./src/nodes/trackChangesNodes";
+export { default as trackChangesNodes } from './src/nodes/trackChangesNodes';
diff --git a/wax-prosemirror-schema/package.json b/wax-prosemirror-schema/package.json
index 7dbab31226464154cc7d7d41e58950fe534504d7..6aff35c7dd5732f3c667d040073859a10b074ee8 100644
--- a/wax-prosemirror-schema/package.json
+++ b/wax-prosemirror-schema/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror schema",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"
diff --git a/wax-prosemirror-schema/src/nodes/codeBlockNode.js b/wax-prosemirror-schema/src/nodes/codeBlockNode.js
new file mode 100644
index 0000000000000000000000000000000000000000..18ae5b2945ae3a23a623471be12bdd23c83eb112
--- /dev/null
+++ b/wax-prosemirror-schema/src/nodes/codeBlockNode.js
@@ -0,0 +1,24 @@
+const codeBlock = {
+  content: 'text*',
+  group: 'block',
+  code: true,
+  defining: true,
+  marks: '',
+  attrs: { params: { default: '' } },
+  parseDOM: [
+    {
+      tag: 'pre',
+      preserveWhitespace: 'full',
+      getAttrs(dom) {
+        return {
+          params: dom.dataset.params,
+        };
+      },
+    },
+  ],
+  toDOM(node) {
+    return ['pre', { 'data-params': node.attrs.params }, ['code', 0]];
+  },
+};
+
+export default codeBlock;
diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js
index 614241f5f7efb4a7e33b13d53a363a86e5571d56..0f53929b1d35c2498e4c4506d5e45f88f227cb74 100644
--- a/wax-prosemirror-services/index.js
+++ b/wax-prosemirror-services/index.js
@@ -27,6 +27,7 @@ export { default as TextBlockLevelService } from './src/TextBlockLevel/TextBlock
 export { default as DisplayBlockLevelService } from './src/DisplayBlockLevel/DisplayBlockLevelService';
 export { default as NoteService } from './src/NoteService/NoteService';
 export { default as CommentsService } from './src/CommentsService/CommentsService';
+export { default as CodeBlockService } from './src/CodeBlockService/CodeBlockService';
 /*
 ToolGroups
 */
@@ -38,3 +39,4 @@ export { default as TableToolGroupService } from './src/WaxToolGroups/TableToolG
 export { default as DisplayToolGroupService } from './src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService';
 export { default as TextToolGroupService } from './src/WaxToolGroups/TextToolGroupService/TextToolGroupService';
 export { default as NoteToolGroupService } from './src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService';
+export { default as CodeBlockToolGroupService } from './src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService';
diff --git a/wax-prosemirror-services/package.json b/wax-prosemirror-services/package.json
index 03e3063ae8861e2da3b23695140c496499fabb0c..14d16865144bbafbbf1d96b427b1dfd198a49d4f 100644
--- a/wax-prosemirror-services/package.json
+++ b/wax-prosemirror-services/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror services",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"
@@ -18,6 +18,7 @@
     "wax-prosemirror-core": "^0.0.11",
     "wax-prosemirror-layouts": "^0.0.11",
     "wax-prosemirror-utilities": "^0.0.11",
+    "wax-prosemirror-schema": "^0.0.11",
     "prosemirror-commands": "^1.1.3",
     "prosemirror-transform": "^1.2.3",
     "prosemirror-keymap": "^1.1.3",
diff --git a/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js b/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js
new file mode 100644
index 0000000000000000000000000000000000000000..29c71105cb1e80c5ba164b2c57c7f20a36481dda
--- /dev/null
+++ b/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js
@@ -0,0 +1,16 @@
+import { codeBlockNode } from 'wax-prosemirror-schema';
+import Service from '../Service';
+import CodeBlockTool from './CodeBlockTool';
+
+export default class CodeBlockService extends Service {
+  boot() {}
+
+  register() {
+    this.container.bind('CodeBlock').to(CodeBlockTool);
+    const createNode = this.container.get('CreateNode');
+
+    createNode({
+      codeblock: codeBlockNode,
+    });
+  }
+}
diff --git a/wax-prosemirror-services/src/CodeBlockService/CodeBlockTool.js b/wax-prosemirror-services/src/CodeBlockService/CodeBlockTool.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e7faff1bf164aedd26d261dcebe4456224e5a14
--- /dev/null
+++ b/wax-prosemirror-services/src/CodeBlockService/CodeBlockTool.js
@@ -0,0 +1,16 @@
+import Tools from '../lib/Tools';
+import { injectable } from 'inversify';
+import { icons } from 'wax-prosemirror-components';
+import { Fragment } from 'prosemirror-model';
+
+@injectable()
+class CodeBlockTool extends Tools {
+  title = 'Insert Code Block';
+  content = icons.footnote;
+
+  get run() {}
+
+  get enable() {}
+}
+
+export default CodeBlockTool;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js
index 7429579fc00c5cd0f3f045f831b9c3639c3cd21e..e70cdd3c3179a4553077cf9de2bfbcc478597ed5 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js
@@ -1,11 +1,9 @@
-import Service from "../../Service";
-import Base from "./Base";
+import Service from '../../Service';
+import Base from './Base';
 
 class BaseToolGroupService extends Service {
-  name = "BaseToolGroupService";
-
   register() {
-    this.container.bind("Base").to(Base);
+    this.container.bind('Base').to(Base);
   }
 }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js b/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ad99cdf3a807800578e7628d78e02ac4092e97e
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js
@@ -0,0 +1,13 @@
+import { injectable, inject } from 'inversify';
+import ToolGroup from '../../lib/ToolGroup';
+
+@injectable()
+class CodeBlock extends ToolGroup {
+  tools = [];
+  constructor(@inject('CodeBlock') codeblock) {
+    super();
+    this.tools = [codeblock];
+  }
+}
+
+export default CodeBlock;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService.js
new file mode 100644
index 0000000000000000000000000000000000000000..622ad204cf3c510148b3f23047d820212ba8f759
--- /dev/null
+++ b/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService.js
@@ -0,0 +1,10 @@
+import Service from '../../Service';
+import CodeBlock from './CodeBlock';
+
+class CodeBlockToolGroupService extends Service {
+  register() {
+    this.container.bind('CodeBlock').to(CodeBlock);
+  }
+}
+
+export default CodeBlockToolGroupService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService.js
index 8ffc1852e311c5ced5d0ae2003e9530ac0344f90..ae115fabac7bfe3f6e51fe8e1ce8096a71c6a08c 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService.js
@@ -1,11 +1,9 @@
-import Service from "../../Service";
-import Display from "./Display";
+import Service from '../../Service';
+import Display from './Display';
 
 class DisplayToolGroupService extends Service {
-  name = "DisplayToolGroupService";
-
   register() {
-    this.container.bind("Display").to(Display);
+    this.container.bind('Display').to(Display);
   }
 }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js
index cd249031ac3187899b133dcbf3013786f19e3f07..36b95737d6819970a4a05790fe1c00e80c00e2cf 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js
@@ -1,11 +1,9 @@
-import Service from "../../Service";
-import Images from "./Images";
+import Service from '../../Service';
+import Images from './Images';
 
 class ImageToolGroupService extends Service {
-  name = "ImageToolGroupService";
-
   register() {
-    this.container.bind("Images").to(Images);
+    this.container.bind('Images').to(Images);
   }
 }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js
index 815d423e2c4c99ebbaf4b221667e03350fb98bd2..6e32aabb0d02087400202912a8b83d283f792a8e 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js
@@ -1,11 +1,9 @@
-import Service from "../../Service";
-import Lists from "./Lists";
+import Service from '../../Service';
+import Lists from './Lists';
 
 class ListToolGroupService extends Service {
-  name = "ListToolGroupService";
-
   register() {
-    this.container.bind("Lists").to(Lists);
+    this.container.bind('Lists').to(Lists);
   }
 }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService.js
index 15d469325ab6ef6708dfe39f6e51675fd31e58fc..8f993428b28ed09b05c155c4f998eadc5220bd99 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService.js
@@ -1,11 +1,9 @@
-import Service from "../../Service";
-import Notes from "./Notes";
+import Service from '../../Service';
+import Notes from './Notes';
 
 class NoteToolGroupService extends Service {
-  name = "NoteToolGroupService";
-
   register() {
-    this.container.bind("Notes").to(Notes);
+    this.container.bind('Notes').to(Notes);
   }
 }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TableToolGroupService/TableToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/TableToolGroupService/TableToolGroupService.js
index 3c0b40a5275d74806cf7b27e440a70b4572202a6..457a6fbc96981ea23e9fe1b93206c913bf1dd817 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/TableToolGroupService/TableToolGroupService.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/TableToolGroupService/TableToolGroupService.js
@@ -1,11 +1,9 @@
-import Service from "../../Service";
-import Tables from "./Tables";
+import Service from '../../Service';
+import Tables from './Tables';
 
 class TableToolGroupService extends Service {
-  name = "TableToolGroupService";
-
   register() {
-    this.container.bind("Tables").to(Tables);
+    this.container.bind('Tables').to(Tables);
   }
 }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/TextToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/TextToolGroupService.js
index 7b074f52fb8e41f12e5b7dadd29a02abc1316aa0..397d4b978b268843c95768852364b97d98631c9b 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/TextToolGroupService.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/TextToolGroupService.js
@@ -1,11 +1,9 @@
-import Service from "../../Service";
-import Text from "./Text";
+import Service from '../../Service';
+import Text from './Text';
 
 class TextToolGroupService extends Service {
-  name = "TextToolGroupService";
-
   register() {
-    this.container.bind("Text").to(Text);
+    this.container.bind('Text').to(Text);
   }
 }
 
diff --git a/wax-prosemirror-themes/package.json b/wax-prosemirror-themes/package.json
index 21d4ecbf40406c3ef36b82477fc4f821356aa758..0abb1c7bd9e1e23143cb0b5c1980c9bff98c7633 100644
--- a/wax-prosemirror-themes/package.json
+++ b/wax-prosemirror-themes/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror themes",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"
diff --git a/wax-prosemirror-utilities/package.json b/wax-prosemirror-utilities/package.json
index 52bb22f000e2c733406e39db6e08df3301b0a89e..d0439a75f68a8413fcc318370576424e8b394653 100644
--- a/wax-prosemirror-utilities/package.json
+++ b/wax-prosemirror-utilities/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.11",
   "description": "Wax prosemirror utilities",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "build": "BABEL_ENV=production rollup -c"