diff --git a/wax-prosemirror-core/src/utilities/commands/Commands.js b/wax-prosemirror-core/src/utilities/commands/Commands.js
index e9cf82a1beabb236946146da90ad2304388e1684..563bd74239fd0225f9ad1f84275a9206ea7b2c9c 100644
--- a/wax-prosemirror-core/src/utilities/commands/Commands.js
+++ b/wax-prosemirror-core/src/utilities/commands/Commands.js
@@ -128,7 +128,14 @@ const isOnSameTextBlock = state => {
   return false;
 };
 
-const createComment = (state, dispatch, group, viewid, conversation = []) => {
+const createComment = (
+  state,
+  dispatch,
+  group,
+  viewid,
+  conversation = [],
+  title = '',
+) => {
   const {
     selection: { $from, $to },
     tr,
@@ -153,6 +160,7 @@ const createComment = (state, dispatch, group, viewid, conversation = []) => {
         group,
         viewid,
         conversation,
+        title,
       );
     }
     return createCommentOnFootnote(
@@ -161,6 +169,7 @@ const createComment = (state, dispatch, group, viewid, conversation = []) => {
       group,
       viewid,
       conversation,
+      title,
     );
   }
 
@@ -178,6 +187,7 @@ const createCommentOnSingleFootnote = (
   group,
   viewid,
   conversation,
+  title,
 ) => {
   const { tr } = state;
   tr.step(
@@ -189,6 +199,7 @@ const createCommentOnSingleFootnote = (
         group,
         conversation,
         viewid,
+        title,
       }),
     ),
   ).setMeta('forceUpdate', true);
@@ -201,6 +212,7 @@ const createCommentOnFootnote = (
   group,
   viewid,
   conversation,
+  title,
 ) => {
   const {
     selection: { $from },
@@ -257,6 +269,7 @@ const createCommentOnFootnote = (
           group,
           conversation,
           viewid,
+          title,
         }),
       ),
     ).setMeta('forceUpdate', true);
diff --git a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
index b1360269fa8ac3e705c95246678b0d06aa7c6400..1f499eb98521f145d051479f5eb67c2e19edb101 100644
--- a/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
+++ b/wax-prosemirror-services/src/AiService/components/AskAIOverlay.js
@@ -242,17 +242,17 @@ const AskAIOverlay = ({ setPosition, position, config }) => {
             <ActionButton onClick={tryAgain}>
               <ActionText>
                 <icons.tryAgain />{' '}
-                {!isEmpty(i18n) && i18n.exists(`Wax.AI. Try again`)
+                {!isEmpty(i18n) && i18n.exists(`Wax.AI.Try again`)
                   ? t(`Wax.AI. Try again`)
-                  : ' Try again'}
+                  : 'Try again'}
               </ActionText>
             </ActionButton>
             <ActionButton onClick={discardResults}>
               <ActionText color="#FF4E4E">
                 <icons.deleteIco />{' '}
-                {!isEmpty(i18n) && i18n.exists(`Wax.AI. Discard`)
-                  ? t(`Wax.AI. Discard`)
-                  : ' Discard'}
+                {!isEmpty(i18n) && i18n.exists(`Wax.AI.Discard`)
+                  ? t(`Wax.AI.Discard`)
+                  : 'Discard'}
               </ActionText>
             </ActionButton>
           </ActionSection>
diff --git a/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js b/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js
index 656067d7fc2dd4014fb74aa1e22ba223ce3da937..5a7b1cdc56224b5291a3362ef0ef9e60cfa9ed42 100644
--- a/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js
+++ b/wax-prosemirror-services/src/CommentsService/components/ConnectedComment.js
@@ -72,16 +72,69 @@ export default ({ comment, top, commentId, recalculateTops, users }) => {
     }
   }, [activeComment]);
 
+  // const onClickPost = ({ commentValue, title }) => {
+  //   setClickPost(true);
+  //   const currentUser = user || (users || []).find(u => u.currentUser === true);
+
+  //   const obj = {
+  //     content: commentValue,
+  //     displayName: currentUser
+  //       ? currentUser.displayName || currentUser.username
+  //       : 'Anonymous',
+  //     userId: currentUser ? currentUser.userId : '1',
+  //     timestamp: Math.floor(Date.now()),
+  //   };
+
+  //   comment.attrs.title = title || comment.attrs.title;
+  //   comment.attrs.conversation.push(obj);
+
+  //   const id = uuidv4();
+  //   allCommentsWithSameId.forEach(singleComment => {
+  //     activeView.dispatch(
+  //       activeView.state.tr.removeMark(
+  //         singleComment.pos,
+  //         singleComment.pos + singleComment.node.nodeSize,
+  //         commentMark,
+  //       ),
+  //     );
+
+  //     if (activeViewId !== 'main') {
+  //       activeView.dispatch(
+  //         activeView.state.tr
+  //           .addMark(
+  //             singleComment.pos,
+  //             singleComment.pos + singleComment.node.nodeSize,
+  //             commentMark.create({
+  //               id,
+  //               group: comment.attrs.group,
+  //               viewid: comment.attrs.viewid,
+  //               conversation: comment.attrs.conversation,
+  //               title: comment.attrs.title,
+  //             }),
+  //           )
+  //           .setMeta('forceUpdate', true),
+  //       );
+  //     }
+  //   });
+
+  //   if (activeViewId === 'main') {
+  //     Commands.createComment(
+  //       pmViews.main.state,
+  //       pmViews.main.dispatch,
+  //       comment.attrs.group,
+  //       comment.attrs.viewid,
+  //       comment.attrs.conversation,
+  //     );
+  //   }
+  //   activeView.focus();
+  //   recalculateTops();
+  // };
+
   const onClickPost = ({ commentValue, title }) => {
     setClickPost(true);
-    const currentUser = user || (users || []).find(u => u.currentUser === true);
-
     const obj = {
       content: commentValue,
-      displayName: currentUser
-        ? currentUser.displayName || currentUser.username
-        : 'Anonymous',
-      userId: currentUser ? currentUser.userId : '1',
+      displayName: user.username,
       timestamp: Math.floor(Date.now()),
     };
 
@@ -98,34 +151,22 @@ export default ({ comment, top, commentId, recalculateTops, users }) => {
         ),
       );
 
-      if (activeViewId !== 'main') {
-        activeView.dispatch(
-          activeView.state.tr
-            .addMark(
-              singleComment.pos,
-              singleComment.pos + singleComment.node.nodeSize,
-              commentMark.create({
-                id,
-                group: comment.attrs.group,
-                viewid: comment.attrs.viewid,
-                conversation: comment.attrs.conversation,
-                title: comment.attrs.title,
-              }),
-            )
-            .setMeta('forceUpdate', true),
-        );
-      }
-    });
-
-    if (activeViewId === 'main') {
-      Commands.createComment(
-        pmViews.main.state,
-        pmViews.main.dispatch,
-        comment.attrs.group,
-        comment.attrs.viewid,
-        comment.attrs.conversation,
+      activeView.dispatch(
+        activeView.state.tr
+          .addMark(
+            singleComment.pos,
+            singleComment.pos + singleComment.node.nodeSize,
+            commentMark.create({
+              id,
+              group: comment.attrs.group,
+              viewid: comment.attrs.viewid,
+              conversation: comment.attrs.conversation,
+              title: comment.attrs.title,
+            }),
+          )
+          .setMeta('forceUpdate', true),
       );
-    }
+    });
     activeView.focus();
     recalculateTops();
   };
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js
index f81429ed6f31169d797b3a0be687768a8a14fd64..ebf0583f4048bb8b65e344a579ef4622bb9d26de 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/HeadingService/HeadingService.js
@@ -23,81 +23,111 @@ class HeadingService extends Service {
       return new Heading6(this.config.get('config.OENContainersService'));
     });
     const createNode = this.container.get('CreateNode');
-    createNode({
-      heading2: {
-        content: 'inline*',
-        group: 'block',
-        defining: true,
-        parseDOM: [
-          {
-            tag: 'h2',
+    createNode(
+      {
+        heading2: {
+          content: 'inline*',
+          group: 'block',
+          defining: true,
+          parseDOM: [
+            {
+              tag: 'h2',
+            },
+          ],
+          toDOM(hook, next) {
+            const attrs = {};
+            // eslint-disable-next-line no-param-reassign
+            hook.value = ['h2', attrs, 0];
+            next();
           },
-        ],
-        toDOM(node) {
-          return ['h2', 0];
         },
       },
-    });
-    createNode({
-      heading3: {
-        content: 'inline*',
-        group: 'block',
-        defining: true,
-        parseDOM: [
-          {
-            tag: 'h3',
+      { toWaxSchema: true },
+    );
+    createNode(
+      {
+        heading3: {
+          content: 'inline*',
+          group: 'block',
+          defining: true,
+          parseDOM: [
+            {
+              tag: 'h3',
+            },
+          ],
+          toDOM(hook, next) {
+            const attrs = {};
+            // eslint-disable-next-line no-param-reassign
+            hook.value = ['h3', attrs, 0];
+            next();
           },
-        ],
-        toDOM(node) {
-          return ['h3', 0];
         },
       },
-    });
-    createNode({
-      heading4: {
-        content: 'inline*',
-        group: 'block',
-        defining: true,
-        parseDOM: [
-          {
-            tag: 'h4',
+      { toWaxSchema: true },
+    );
+    createNode(
+      {
+        heading4: {
+          content: 'inline*',
+          group: 'block',
+          defining: true,
+          parseDOM: [
+            {
+              tag: 'h4',
+            },
+          ],
+          toDOM(hook, next) {
+            const attrs = {};
+            // eslint-disable-next-line no-param-reassign
+            hook.value = ['h4', attrs, 0];
+            next();
           },
-        ],
-        toDOM(node) {
-          return ['h4', 0];
         },
       },
-    });
-    createNode({
-      heading5: {
-        content: 'inline*',
-        group: 'block',
-        defining: true,
-        parseDOM: [
-          {
-            tag: 'h5',
+      { toWaxSchema: true },
+    );
+    createNode(
+      {
+        heading5: {
+          content: 'inline*',
+          group: 'block',
+          defining: true,
+          parseDOM: [
+            {
+              tag: 'h5',
+            },
+          ],
+          toDOM(hook, next) {
+            const attrs = {};
+            // eslint-disable-next-line no-param-reassign
+            hook.value = ['h5', attrs, 0];
+            next();
           },
-        ],
-        toDOM(node) {
-          return ['h5', 0];
         },
       },
-    });
-    createNode({
-      heading6: {
-        content: 'inline*',
-        group: 'block',
-        defining: true,
-        parseDOM: [
-          {
-            tag: 'h6',
+      { toWaxSchema: true },
+    );
+    createNode(
+      {
+        heading6: {
+          content: 'inline*',
+          group: 'block',
+          defining: true,
+          parseDOM: [
+            {
+              tag: 'h6',
+            },
+          ],
+          toDOM(hook, next) {
+            const attrs = {};
+            // eslint-disable-next-line no-param-reassign
+            hook.value = ['h6', attrs, 0];
+            next();
           },
-        ],
-        toDOM(node) {
-          return ['h6', 0];
         },
       },
-    });
+      { toWaxSchema: true },
+    );
   }
 }
 
diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/headingTrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading2TrackNode.js
similarity index 58%
rename from wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/headingTrackNode.js
rename to wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading2TrackNode.js
index ad73435656bfb3cc3d9501212e202183e5e81355..69b20f612c42099cb64d7147d1acdfa24722eb58 100644
--- a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/headingTrackNode.js
+++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading2TrackNode.js
@@ -1,15 +1,16 @@
 import { SchemaHelpers } from 'wax-prosemirror-core';
 
-const heading = {
+const heading2 = {
+  content: 'inline*',
+  group: 'block',
+  priority: 0,
+  defining: true,
   attrs: {
     id: { default: '' },
     track: { default: [] },
     group: { default: '' },
     viewid: { default: '' },
   },
-  content: 'inline*',
-  group: 'block',
-  defining: true,
   parseDOM: [
     {
       tag: 'h2',
@@ -23,30 +24,6 @@ const heading = {
         next();
       },
     },
-    {
-      tag: 'h3',
-      getAttrs(hook, next) {
-        Object.assign(hook, {
-          id: hook.dom.dataset.id,
-          track: SchemaHelpers.parseTracks(hook.dom.dataset.track),
-          group: hook.dom.dataset.group,
-          viewid: hook.dom.dataset.viewid,
-        });
-        next();
-      },
-    },
-    {
-      tag: 'h4',
-      getAttrs(hook, next) {
-        Object.assign(hook, {
-          id: hook.dom.dataset.id,
-          track: SchemaHelpers.parseTracks(hook.dom.dataset.track),
-          group: hook.dom.dataset.group,
-          viewid: hook.dom.dataset.viewid,
-        });
-        next();
-      },
-    },
   ],
   toDOM(hook, next) {
     if (hook.node.attrs.track && hook.node.attrs.track.length) {
@@ -61,4 +38,4 @@ const heading = {
   },
 };
 
-export default heading;
+export default heading2;
diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading3TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading3TrackNode.js
new file mode 100644
index 0000000000000000000000000000000000000000..ae34a54d64e7979da36b148ab7a7ce9fe3af5a01
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading3TrackNode.js
@@ -0,0 +1,41 @@
+import { SchemaHelpers } from 'wax-prosemirror-core';
+
+const heading3 = {
+  content: 'inline*',
+  group: 'block',
+  priority: 0,
+  defining: true,
+  attrs: {
+    id: { default: '' },
+    track: { default: [] },
+    group: { default: '' },
+    viewid: { default: '' },
+  },
+  parseDOM: [
+    {
+      tag: 'h3',
+      getAttrs(hook, next) {
+        Object.assign(hook, {
+          id: hook.dom.dataset.id,
+          track: SchemaHelpers.parseTracks(hook.dom.dataset.track),
+          group: hook.dom.dataset.group,
+          viewid: hook.dom.dataset.viewid,
+        });
+        next();
+      },
+    },
+  ],
+  toDOM(hook, next) {
+    if (hook.node.attrs.track && hook.node.attrs.track.length) {
+      Object.assign(hook.value[1], {
+        'data-id': hook.node.attrs.id,
+        'data-track': JSON.stringify(hook.node.attrs.track),
+        'data-group': hook.node.attrs.group,
+        'data-viewid': hook.node.attrs.viewid,
+      });
+    }
+    next();
+  },
+};
+
+export default heading3;
diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading4TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading4TrackNode.js
new file mode 100644
index 0000000000000000000000000000000000000000..31316c5f5716cc08f8429ea052813b2dc70c7b5c
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading4TrackNode.js
@@ -0,0 +1,41 @@
+import { SchemaHelpers } from 'wax-prosemirror-core';
+
+const heading4 = {
+  content: 'inline*',
+  group: 'block',
+  priority: 0,
+  defining: true,
+  attrs: {
+    id: { default: '' },
+    track: { default: [] },
+    group: { default: '' },
+    viewid: { default: '' },
+  },
+  parseDOM: [
+    {
+      tag: 'h4',
+      getAttrs(hook, next) {
+        Object.assign(hook, {
+          id: hook.dom.dataset.id,
+          track: SchemaHelpers.parseTracks(hook.dom.dataset.track),
+          group: hook.dom.dataset.group,
+          viewid: hook.dom.dataset.viewid,
+        });
+        next();
+      },
+    },
+  ],
+  toDOM(hook, next) {
+    if (hook.node.attrs.track && hook.node.attrs.track.length) {
+      Object.assign(hook.value[1], {
+        'data-id': hook.node.attrs.id,
+        'data-track': JSON.stringify(hook.node.attrs.track),
+        'data-group': hook.node.attrs.group,
+        'data-viewid': hook.node.attrs.viewid,
+      });
+    }
+    next();
+  },
+};
+
+export default heading4;
diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading5TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading5TrackNode.js
new file mode 100644
index 0000000000000000000000000000000000000000..7997d98da0dbd7cb80ee7f7a93a6743d61dc79da
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading5TrackNode.js
@@ -0,0 +1,41 @@
+import { SchemaHelpers } from 'wax-prosemirror-core';
+
+const heading5 = {
+  content: 'inline*',
+  group: 'block',
+  priority: 0,
+  defining: true,
+  attrs: {
+    id: { default: '' },
+    track: { default: [] },
+    group: { default: '' },
+    viewid: { default: '' },
+  },
+  parseDOM: [
+    {
+      tag: 'h5',
+      getAttrs(hook, next) {
+        Object.assign(hook, {
+          id: hook.dom.dataset.id,
+          track: SchemaHelpers.parseTracks(hook.dom.dataset.track),
+          group: hook.dom.dataset.group,
+          viewid: hook.dom.dataset.viewid,
+        });
+        next();
+      },
+    },
+  ],
+  toDOM(hook, next) {
+    if (hook.node.attrs.track && hook.node.attrs.track.length) {
+      Object.assign(hook.value[1], {
+        'data-id': hook.node.attrs.id,
+        'data-track': JSON.stringify(hook.node.attrs.track),
+        'data-group': hook.node.attrs.group,
+        'data-viewid': hook.node.attrs.viewid,
+      });
+    }
+    next();
+  },
+};
+
+export default heading5;
diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading6TrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading6TrackNode.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f6011d09181925778fc3eb314c0c8447b7bd142
--- /dev/null
+++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/heading6TrackNode.js
@@ -0,0 +1,41 @@
+import { SchemaHelpers } from 'wax-prosemirror-core';
+
+const heading6 = {
+  content: 'inline*',
+  group: 'block',
+  priority: 0,
+  defining: true,
+  attrs: {
+    id: { default: '' },
+    track: { default: [] },
+    group: { default: '' },
+    viewid: { default: '' },
+  },
+  parseDOM: [
+    {
+      tag: 'h6',
+      getAttrs(hook, next) {
+        Object.assign(hook, {
+          id: hook.dom.dataset.id,
+          track: SchemaHelpers.parseTracks(hook.dom.dataset.track),
+          group: hook.dom.dataset.group,
+          viewid: hook.dom.dataset.viewid,
+        });
+        next();
+      },
+    },
+  ],
+  toDOM(hook, next) {
+    if (hook.node.attrs.track && hook.node.attrs.track.length) {
+      Object.assign(hook.value[1], {
+        'data-id': hook.node.attrs.id,
+        'data-track': JSON.stringify(hook.node.attrs.track),
+        'data-group': hook.node.attrs.group,
+        'data-viewid': hook.node.attrs.viewid,
+      });
+    }
+    next();
+  },
+};
+
+export default heading6;
diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js
index 4fb20498d2b2acb5f88a61e67549ec5380a2b33d..6b8751d2190f6a59c6bd1f46b8eac7b92bae9ac4 100644
--- a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js
+++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/index.js
@@ -3,7 +3,11 @@ import titleTrackNode from './titleTrackNode';
 import subTitleTrackNode from './subTitleTrackNode';
 import epigraphProseTrackNode from './epigraphProseTrackNode';
 import epigraphPoetryTrackNode from './epigraphPoetryTrackNode';
-import headingTrackNode from './headingTrackNode';
+import heading2TrackNode from './heading2TrackNode';
+import heading3TrackNode from './heading3TrackNode';
+import heading4TrackNode from './heading4TrackNode';
+import heading5TrackNode from './heading5TrackNode';
+import heading6TrackNode from './heading6TrackNode';
 import paragraphContTrackNode from './paragraphContTrackNode';
 import extractProseTrackNode from './extractProseTrackNode';
 import extractPoetryTrackNode from './extractPoetryTrackNode';
@@ -25,7 +29,11 @@ export default {
   extractPoetry: extractPoetryTrackNode,
   orderedlist: orderedListTrackNode,
   sourceNote: sourceNoteTrackNode,
-  heading: headingTrackNode,
+  heading2: heading2TrackNode,
+  heading3: heading3TrackNode,
+  heading4: heading4TrackNode,
+  heading5: heading5TrackNode,
+  heading6: heading6TrackNode,
   customTagBlock: customBlockTrackNode,
   // bulletlist: bulletListTrackNode,
   // list_item: listItemTrackNode,
diff --git a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js
index 913a56f83a59cad0171ba65c180dab188aa136ad..248ebe61090bda5bcf900d3162a7a52b82631968 100644
--- a/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js
+++ b/wax-prosemirror-services/src/TrackChangeService/schema/trackChangesNodes/titleTrackNode.js
@@ -13,7 +13,7 @@ const title = {
   },
   parseDOM: [
     {
-      tag: 'p.title',
+      tag: 'h1',
       getAttrs(hook, next) {
         Object.assign(hook, {
           id: hook.dom.dataset.id,