diff --git a/editors/editoria/src/config/config.js b/editors/editoria/src/config/config.js
index 319094f1a7c8abbc3b3c5b71224b78a255949f01..6a29c0f794a50e5f6a3a00eb066093403b02ca58 100644
--- a/editors/editoria/src/config/config.js
+++ b/editors/editoria/src/config/config.js
@@ -71,9 +71,9 @@ export default {
     new TextBlockLevelService(),
     new TextToolGroupService(),
     new ListsService(),
+    new LinkService(),
     new TrackChangeService(),
     new CommentsService(),
-    new LinkService(),
     new PlaceholderService(),
     new ImageService(),
     new InlineAnnotationsService(),
diff --git a/wax-prosemirror-components/src/components/link/LinkComponent.js b/wax-prosemirror-components/src/components/link/LinkComponent.js
index c44c989fe393ce578cf4a4da3f3fc7b7810b8fcc..7fc43a202c8c296700f9298f65e1a0f19462e21c 100644
--- a/wax-prosemirror-components/src/components/link/LinkComponent.js
+++ b/wax-prosemirror-components/src/components/link/LinkComponent.js
@@ -43,6 +43,7 @@ const LinkComponent = ({ mark, setPosition, position }) => {
     const href = linkHref;
     const linkMark = state.schema.marks.link;
     const { tr } = state;
+
     dispatch(
       tr.addMark(
         mark.from,
@@ -86,7 +87,7 @@ const LinkComponent = ({ mark, setPosition, position }) => {
   const removeMarkIfEmptyHref = () => {
     const { selection: { $from, $to } } = state;
     const PMLinkMark = state.schema.marks["link"];
-    const actualMark = DocumentHelpers.findMark(state, PMLinkMark);
+    const actualMark = DocumentHelpers.getSelectionMark(state, PMLinkMark);
     setLLastLinkMark(actualMark);
 
     if (
diff --git a/wax-prosemirror-components/src/components/notes/NoteEditorContainer.js b/wax-prosemirror-components/src/components/notes/NoteEditorContainer.js
index 9acb8015c9b1340c4ddd630a51e2f4c52d58c893..9aee856a0018f196896ff03d37c48417e977270d 100644
--- a/wax-prosemirror-components/src/components/notes/NoteEditorContainer.js
+++ b/wax-prosemirror-components/src/components/notes/NoteEditorContainer.js
@@ -31,6 +31,26 @@ const NoteStyled = styled.div`
       background-color: #ffab20;
     }
   }
+
+  span.deletion {
+    text-decoration: line-through;
+    color: red;
+  }
+
+  span.insertion {
+    color: blue;
+  }
+
+  .selected-insertion,
+  .selected-deletion,
+  .selected-format-change,
+  .selected-block-change {
+    background-color: #fffacf;
+  }
+
+  .format-change {
+    border-bottom: 2px solid blue;
+  }
 `;
 
 const NoteEditorContainer = React.forwardRef((props, ref) => (
diff --git a/wax-prosemirror-components/src/components/trackChanges/TrackChangeBox.js b/wax-prosemirror-components/src/components/trackChanges/TrackChangeBox.js
index 7c1fadeca38daa1a181cdd8451d51b748b1828d5..84d2d9b35d656ddc35ddfbf123369c003b5e85a2 100644
--- a/wax-prosemirror-components/src/components/trackChanges/TrackChangeBox.js
+++ b/wax-prosemirror-components/src/components/trackChanges/TrackChangeBox.js
@@ -28,7 +28,6 @@ const TrackChangeBoxStyled = styled.div`
 `;
 
 export default ({ trackChange, view, top, dataBox }) => {
-  console.log(trackChange);
   const [animate, setAnimate] = useState(false);
   const { view: { main }, app, activeView } = useContext(WaxContext);
   let action;
diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js
index e6ab661e0ad8433d5547d3ddc513295a67488c0f..5b1a7c08a8241e9a8fbb31ff60590353cfbfa71e 100644
--- a/wax-prosemirror-core/src/WaxView.js
+++ b/wax-prosemirror-core/src/WaxView.js
@@ -45,6 +45,7 @@ export default props => {
         }
       }
     );
+
     context.updateView(
       {
         main: view
@@ -59,20 +60,25 @@ export default props => {
 
   const dispatchTransaction = transaction => {
     const { TrackChange } = props;
-    const group = "main";
     const tr = TrackChange
-      ? trackedTransaction(transaction, view.state, user, group)
+      ? trackedTransaction(transaction, view.state, user)
       : transaction;
 
     const state = view.state.apply(tr);
     view.updateState(state);
 
-    context.updateView(
-      {
-        main: view
-      },
-      "main"
-    );
+    /*when a transaction comes from a view other than
+    main don't keep updating the view ,as this is
+    the central point of each transaction
+    */
+    if (!transaction.getMeta("outsideView")) {
+      context.updateView(
+        {
+          main: view
+        },
+        "main"
+      );
+    }
 
     props.onChange(state.doc.content);
   };
diff --git a/wax-prosemirror-schema/src/nodes/footNoteNode.js b/wax-prosemirror-schema/src/nodes/footNoteNode.js
index 3a1f74070bdafd5820607647f96692637acfeb67..a83987c177ce1a008ff878985b61bf64f10a1478 100644
--- a/wax-prosemirror-schema/src/nodes/footNoteNode.js
+++ b/wax-prosemirror-schema/src/nodes/footNoteNode.js
@@ -1,3 +1,4 @@
+//TODO Write the node in WaxSchema
 const footnote = {
   group: "inline",
   content: "inline*",
diff --git a/wax-prosemirror-services/src/NoteService/Editor.js b/wax-prosemirror-services/src/NoteService/Editor.js
index 12ce67a8888d038999c8868a8cafe5e6d775ff00..87d36a6628e4127b322f3f9334027eee53fd090e 100644
--- a/wax-prosemirror-services/src/NoteService/Editor.js
+++ b/wax-prosemirror-services/src/NoteService/Editor.js
@@ -39,6 +39,11 @@ export default ({ node, view }) => {
             node: { attrs: { id: noteId } }
           });
 
+          //Set everytime the active view into context
+          setTimeout(() => {
+            context.updateView({}, noteId);
+          }, 20);
+
           if (!tr.getMeta("fromOutside")) {
             let outerTr = view.state.tr,
               offsetMap = StepMap.offset(noteFound[0].pos + 1);
@@ -48,10 +53,8 @@ export default ({ node, view }) => {
                 outerTr.step(steps[j].map(offsetMap));
             }
 
-            if (outerTr.docChanged) view.dispatch(outerTr);
-
-            //Set everytime the active view into context
-            context.updateView({}, noteId);
+            if (outerTr.docChanged)
+              view.dispatch(outerTr.setMeta("outsideView", "notes"));
           }
         },
         handleDOMEvents: {
diff --git a/wax-prosemirror-services/src/OverlayService/usePosition.js b/wax-prosemirror-services/src/OverlayService/usePosition.js
index 9768d0aa241f85305d2d0ecde1503f02589a26a1..dc2738477299a21895b39f42f481d2bd2f82e668 100644
--- a/wax-prosemirror-services/src/OverlayService/usePosition.js
+++ b/wax-prosemirror-services/src/OverlayService/usePosition.js
@@ -55,7 +55,7 @@ export default options => {
   const displayOnMark = (activeView, options) => {
     const { markType, followCursor } = options;
     const PMmark = activeView.state.schema.marks[markType];
-    mark = DocumentHelpers.findMark(activeView.state, PMmark);
+    mark = DocumentHelpers.getSelectionMark(activeView.state, PMmark);
 
     if (!isObject(mark)) return defaultOverlay;
     const { from, to } = followCursor ? activeView.state.selection : mark;
diff --git a/wax-prosemirror-services/src/SchemaService/Node.js b/wax-prosemirror-services/src/SchemaService/Node.js
index c3108aea345571c4ec27a430dd05e603b16517ca..ae38bf3dbca268f657cad94109b33c2512f2284d 100644
--- a/wax-prosemirror-services/src/SchemaService/Node.js
+++ b/wax-prosemirror-services/src/SchemaService/Node.js
@@ -6,11 +6,12 @@ export default class Node {
   name = "";
   importer = {};
 
-  isolating = false;
+  atom = false;
   inline = false;
+  isolating = false;
+  draggable = false;
   group = "";
   content = "";
-  draggable = false;
   _attrs = {};
   _parseRules = [];
 
@@ -57,6 +58,7 @@ export default class Node {
     const importer = this.importer;
 
     return {
+      atom: this.atom,
       inline: this.inline,
       group: this.group,
       content: this.content,
diff --git a/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markInsertion.js b/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markInsertion.js
index c8c6d547cc1cb597b96beb43aba9c678aef98483..d9c6d841428a7e2cbb028dd083daf2cc0a15e7b1 100644
--- a/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markInsertion.js
+++ b/wax-prosemirror-services/src/TrackChangeService/track-changes/helpers/markInsertion.js
@@ -1,3 +1,5 @@
+import { v4 as uuidv4 } from "uuid";
+
 const markInsertion = (tr, from, to, user, date, group) => {
   tr.removeMark(from, to, tr.doc.type.schema.marks.deletion);
   tr.removeMark(from, to, tr.doc.type.schema.marks.insertion);
@@ -36,7 +38,7 @@ const markInsertion = (tr, from, to, user, date, group) => {
       tr.setNodeMarkup(
         pos,
         null,
-        Object.assign({}, node.attrs, { track, group }),
+        Object.assign({}, node.attrs, { track, group, id: uuidv4() }),
         node.marks
       );
     }
diff --git a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
index 0cebdfbbde3d8dcf1a52c7fa5c171b827c99dfa2..10d5dadef64454b757045699501b038ee8b03016 100644
--- a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
+++ b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
@@ -20,18 +20,19 @@ import replaceAroundStep from "./helpers/replaceAroundStep";
 import addMarkStep from "./helpers/addMarkStep";
 import removeMarkStep from "./helpers/removeMarkStep";
 
-const trackedTransaction = (tr, state, user, group) => {
+const trackedTransaction = (tr, state, user) => {
   if (
     !tr.steps.length ||
     (tr.meta &&
       !Object.keys(tr.meta).every(metadata =>
-        ["inputType", "uiEvent", "paste"].includes(metadata)
+        ["inputType", "uiEvent", "paste", "outsideView"].includes(metadata)
       )) ||
     ["historyUndo", "historyRedo"].includes(tr.getMeta("inputType"))
   ) {
     return tr;
   }
 
+  const group = tr.getMeta("outsideView") ? tr.getMeta("outsideView") : "main";
   const newTr = state.tr;
   const map = new Mapping();
   const date = Math.floor(Date.now() / 300000);
diff --git a/wax-prosemirror-utilities/src/document/DocumentHelpers.js b/wax-prosemirror-utilities/src/document/DocumentHelpers.js
index 37a09a354e27b5d3c0adbdf53b2d27df3c9060ab..f29e9bad9975c17100a787fac0fb0dc8b2a6cd42 100644
--- a/wax-prosemirror-utilities/src/document/DocumentHelpers.js
+++ b/wax-prosemirror-utilities/src/document/DocumentHelpers.js
@@ -23,6 +23,25 @@ const findMark = (state, PMmark, toArr = false) => {
   return markFound;
 };
 
+const getSelectionMark = (state, PMmark) => {
+  const { selection: { $from, $to }, doc } = state;
+  let markFound;
+  doc.nodesBetween($from.pos, $to.pos, (node, from) => {
+    if (node.marks) {
+      const actualMark = node.marks.find(mark => mark.type === PMmark);
+      if (actualMark) {
+        markFound = {
+          from: $from.pos,
+          to: $to.pos,
+          attrs: actualMark.attrs
+        };
+      }
+    }
+  });
+
+  return markFound;
+};
+
 export const flatten = (node, descend = true) => {
   if (!node) {
     throw new Error('Invalid "node" parameter');
@@ -72,5 +91,6 @@ export default {
   findChildrenByType,
   findInlineNodes,
   findChildrenByMark,
-  findChildrenByAttr
+  findChildrenByAttr,
+  getSelectionMark
 };