diff --git a/wax-prosemirror-components/src/components/comments/Comment.js b/wax-prosemirror-components/src/components/comments/Comment.js
index fd1c59c3a1687bb4fabe554981efac07054f8b74..81e9076e06db7730dc62c2405e7df3b98f3167fb 100644
--- a/wax-prosemirror-components/src/components/comments/Comment.js
+++ b/wax-prosemirror-components/src/components/comments/Comment.js
@@ -34,7 +34,6 @@ export default ({ comment, activeView, user }) => {
 
     const obj = { [user.username]: value };
     commentAnnotation.attrs.conversation.push(obj);
-
     const allComments = DocumentHelpers.findAllCommentsWithSameId(state);
     allComments.forEach(singleComment => {
       dispatch(
@@ -67,7 +66,6 @@ export default ({ comment, activeView, user }) => {
       // saveComment();
     }
 
-    // TODO pass correct comment pos for notes
     if (conversation.length === 0 && value === '') {
       const commentPosition = DocumentHelpers.findMarkPosition(activeView, comment.pos, 'comment');
       dispatch(state.tr.removeMark(commentPosition.from, commentPosition.to, commentMark));
@@ -75,8 +73,7 @@ export default ({ comment, activeView, user }) => {
   };
 
   const resolveComment = () => {
-    // TODO pass correct comment pos for notes
-    const commentPosition = DocumentHelpers.findMarkPoistion(activeView, comment.pos, 'comment');
+    const commentPosition = DocumentHelpers.findMarkPosition(activeView, comment.pos, 'comment');
     dispatch(state.tr.removeMark(commentPosition.from, commentPosition.to, commentMark));
   };
 
diff --git a/wax-prosemirror-components/src/components/comments/CommentBox.js b/wax-prosemirror-components/src/components/comments/CommentBox.js
index d83be1b939837841e8fe6565a20534a8db4de23f..610bb3da8ce566b5d0cfe33ad884d7b88c31bb8c 100644
--- a/wax-prosemirror-components/src/components/comments/CommentBox.js
+++ b/wax-prosemirror-components/src/components/comments/CommentBox.js
@@ -60,29 +60,9 @@ export default ({ comment, top, dataBox }) => {
     let commentPos = comment.pos;
     const viewId = comment.attrs.viewid;
 
-    if (comment.attrs.group !== 'main') {
-      const allInlineNodes = DocumentHelpers.findInlineNodes(
-        view[viewId].state.doc,
-      );
-
-      allInlineNodes.forEach(node => {
-        if (node.node.marks.length > 0) {
-          node.node.marks.forEach(mark => {
-            if (
-              mark.type.name === 'comment' &&
-              mark.attrs.id === comment.attrs.id
-            ) {
-              commentPos = node.pos;
-            }
-          });
-        }
-      });
-    }
     view[viewId].dispatch(
       view[viewId].state.tr.setSelection(
-        new TextSelection(
-          view[viewId].state.tr.doc.resolve(commentPos + 1, commentPos + 1),
-        ),
+        new TextSelection(view[viewId].state.tr.doc.resolve(commentPos + 1, commentPos + 1)),
       ),
     );
 
@@ -93,19 +73,8 @@ export default ({ comment, top, dataBox }) => {
     <>
       <Transition in={animate} timeout={1000}>
         {state => (
-          <CommentBoxStyled
-            top={top}
-            state={state}
-            data-box={dataBox}
-            active={active}
-            onClick={setCommentActive}
-          >
-            <Comment
-              comment={comment}
-              active={active}
-              activeView={activeView}
-              user={user}
-            />
+          <CommentBoxStyled top={top} state={state} data-box={dataBox} active={active} onClick={setCommentActive}>
+            <Comment comment={comment} active={active} activeView={activeView} user={user} />
           </CommentBoxStyled>
         )}
       </Transition>
diff --git a/wax-prosemirror-components/src/components/rightArea/RightArea.js b/wax-prosemirror-components/src/components/rightArea/RightArea.js
index cf2e8b704005909f0f8e2b0b4292d61d4d3d9385..1be82ff3a65fe48ca0dfd1f68d46f0d16a40b11f 100644
--- a/wax-prosemirror-components/src/components/rightArea/RightArea.js
+++ b/wax-prosemirror-components/src/components/rightArea/RightArea.js
@@ -1,18 +1,13 @@
 import { Mark } from 'prosemirror-model';
-import React, {
-  useContext,
-  useState,
-  useEffect,
-  useMemo,
-  useCallback,
-} from 'react';
-import { each, uniqBy, sortBy } from 'lodash';
+import React, { useContext, useState, useEffect, useMemo, useCallback } from 'react';
+import { each, uniqBy, sortBy, throttle } from 'lodash';
 import { WaxContext } from 'wax-prosemirror-core';
 import { DocumentHelpers } from 'wax-prosemirror-utilities';
 import BoxList from './BoxList';
 
 export default ({ area }) => {
   const {
+    view,
     view: { main },
     app,
     activeView,
@@ -29,10 +24,11 @@ export default ({ area }) => {
     let top = 0;
     const allCommentsTop = [];
 
-    each(marksNodes[area], (markNode, pos) => {
+    const nodesMarksToIterrate = marksNodes[area] === 'main' ? sortBy(marksNodes[area], ['pos']) : marksNodes[area];
+
+    each(nodesMarksToIterrate, (markNode, pos) => {
       const WaxSurface = main.dom.getBoundingClientRect();
-      const id =
-        markNode instanceof Mark ? markNode.attrs.id : markNode.node.attrs.id;
+      const id = markNode instanceof Mark ? markNode.attrs.id : markNode.node.attrs.id;
 
       const activeComment = commentPlugin.getState(activeView.state).comment;
 
@@ -42,19 +38,12 @@ export default ({ area }) => {
       // annotation top
       if (area === 'main') {
         markNodeEl = document.querySelector(`[data-id="${id}"]`);
-        if (markNodeEl)
-          annotationTop =
-            markNodeEl.getBoundingClientRect().top - WaxSurface.top;
+        if (markNodeEl) annotationTop = markNodeEl.getBoundingClientRect().top - WaxSurface.top;
       } else {
         const panelWrapper = document.getElementsByClassName('panelWrapper');
-        const panelWrapperHeight = panelWrapper[0].getBoundingClientRect()
-          .height;
-        markNodeEl = document
-          .querySelector('#notes-container')
-          .querySelector(`[data-id="${id}"]`);
-        if (markNodeEl)
-          annotationTop =
-            markNodeEl.getBoundingClientRect().top - panelWrapperHeight - 50;
+        const panelWrapperHeight = panelWrapper[0].getBoundingClientRect().height;
+        markNodeEl = document.querySelector('#notes-container').querySelector(`[data-id="${id}"]`);
+        if (markNodeEl) annotationTop = markNodeEl.getBoundingClientRect().top - panelWrapperHeight - 50;
       }
 
       // get height of this markNode box
@@ -118,28 +107,27 @@ export default ({ area }) => {
   });
 
   useEffect(() => {
-    setMarksNodes(updateMarks(main));
+    setMarksNodes(updateMarks(view));
     setPosition(setTops());
-  }, [JSON.stringify(updateMarks(main)), JSON.stringify(setTops())]);
+  }, [JSON.stringify(updateMarks(view)), JSON.stringify(setTops())]);
 
   const CommentTrackComponent = useMemo(
-    () => (
-      <BoxList
-        commentsTracks={marksNodes[area] || []}
-        area={area}
-        view={main}
-        position={position}
-      />
-    ),
+    () => <BoxList commentsTracks={marksNodes[area] || []} area={area} view={main} position={position} />,
     [marksNodes[area] || [], position],
   );
   return <>{CommentTrackComponent}</>;
 };
 
+//  TODO if allInlineNodes and allBlockNodes count don't change, do not compute again
 const updateMarks = view => {
-  if (view) {
-    const allBlockNodes = DocumentHelpers.findBlockNodes(view.state.doc);
-    const allInlineNodes = DocumentHelpers.findInlineNodes(view.state.doc);
+  if (view.main) {
+    const allInlineNodes = [];
+
+    Object.keys(view).forEach(eachView => {
+      allInlineNodes.push(...DocumentHelpers.findInlineNodes(view[eachView].state.doc));
+    });
+
+    const allBlockNodes = DocumentHelpers.findBlockNodes(view.main.state.doc);
     const finalMarks = [];
     const finalNodes = [];
 
@@ -152,7 +140,6 @@ const updateMarks = view => {
             mark.type.name === 'deletion' ||
             mark.type.name === 'format_change'
           ) {
-            // THIS POSITION REFERS TO THE MAIN VIEW
             mark.pos = node.pos;
             finalMarks.push(mark);
           }
@@ -170,10 +157,8 @@ const updateMarks = view => {
 
     const groupedMarkNodes = {};
 
-    sortBy(nodesAndMarks, ['pos']).forEach(markNode => {
-      const markNodeAttrs = markNode.attrs
-        ? markNode.attrs
-        : markNode.node.attrs;
+    nodesAndMarks.forEach(markNode => {
+      const markNodeAttrs = markNode.attrs ? markNode.attrs : markNode.node.attrs;
 
       if (!groupedMarkNodes[markNodeAttrs.group]) {
         groupedMarkNodes[markNodeAttrs.group] = [markNode];