diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js
index 08f4a99e4b4e8693e399a3f67fbd3b011f91e81c..1e332ab95a60a13c5cc0f106f004e975dd78713d 100644
--- a/editors/editoria/src/config/config.js
+++ b/editors/editoria/src/config/config.js
@@ -56,12 +56,15 @@ export default {
 
   PmPlugins: [columnResizing(), tableEditing(), invisibles([hardBreak()])],
 
+  // Always load first CommentsService and LinkService,
+  //as it matters on how PM treats nodes and marks
   services: [
+    new CommentsService(),
+    new LinkService(),
     new PlaceholderService(),
     new ImageService(),
     new ListsService(),
     new InlineAnnotationsService(),
-    new LinkService(),
     new TablesService(),
     new TextBlockLevelService(),
     new BaseService(),
@@ -75,7 +78,6 @@ export default {
     new AnnotationToolGroupService(),
     new NoteToolGroupService(),
     new ListToolGroupService(),
-    new TrackChangeService(),
-    new CommentsService()
+    new TrackChangeService()
   ]
 };
diff --git a/wax-prosemirror-schema/src/marks/commentMark.js b/wax-prosemirror-schema/src/marks/commentMark.js
index e297644ddde7454bc129cafe3bea4ad3cb3ee16b..3e46d3b2ac6b71c6e4ba863abe929bcfd39fba42 100644
--- a/wax-prosemirror-schema/src/marks/commentMark.js
+++ b/wax-prosemirror-schema/src/marks/commentMark.js
@@ -1,33 +1,37 @@
 const comment = {
   attrs: {
+    class: { default: "comment" },
     id: { default: "" },
     group: { default: "" },
     conversation: []
   },
   inclusive: false,
-  // excludes: "",
   parseDOM: [
     {
-      tag: "span.comment[data-conversation]",
-      getAttrs(dom) {
-        return {
-          id: dom.dataset.id,
-          group: dom.dataset.group,
-          conversation: JSON.parse(dom.dataset.conversation)
-        };
+      tag: "span.comment",
+      getAttrs(hook, next) {
+        Object.assign(hook, {
+          class: hook.dom.getAttribute("class"),
+          id: hook.dom.dataset.id,
+          group: hook.dom.dataset.group,
+          conversation: hook.dom.dataset.conversation
+        });
+        next();
       }
     }
   ],
-  toDOM(node) {
-    return [
+  toDOM(hook, next) {
+    hook.value = [
       "span",
       {
-        class: "comment",
-        "data-id": node.attrs.id,
-        "data-group": node.attrs.group,
-        "data-conversation": JSON.stringify(node.attrs.conversation)
-      }
+        class: hook.node.attrs.class,
+        "data-id": hook.node.attrs.id,
+        "data-track": JSON.stringify(hook.node.attrs.track),
+        "data-group": hook.node.attrs.group
+      },
+      0
     ];
+    next();
   }
 };
 
diff --git a/wax-prosemirror-services/src/CommentsService/CommentsService.js b/wax-prosemirror-services/src/CommentsService/CommentsService.js
index 96d9ef630a477dbbfcfa9fae7f352f6327a16ccb..1a35255163621987ac19d1abbf8f56c9d78f7fd5 100644
--- a/wax-prosemirror-services/src/CommentsService/CommentsService.js
+++ b/wax-prosemirror-services/src/CommentsService/CommentsService.js
@@ -29,8 +29,11 @@ export default class CommentsService extends Service {
 
   register() {
     const createMark = this.container.get("CreateMark");
-    createMark({
-      comment: commentMark
-    });
+    createMark(
+      {
+        comment: commentMark
+      },
+      { toWaxSchema: true }
+    );
   }
 }