diff --git a/editors/demo/src/Editoria/layout/EditoriaLayout.js b/editors/demo/src/Editoria/layout/EditoriaLayout.js
index bc4a0b7a08a871c436e1b453c6fe342bdbacd8a7..6eea3a0c1225c8039cae0ab412ebdd3ee6bb1d65 100644
--- a/editors/demo/src/Editoria/layout/EditoriaLayout.js
+++ b/editors/demo/src/Editoria/layout/EditoriaLayout.js
@@ -171,6 +171,7 @@ const NotesContainer = styled.div`
   padding-left: ${grid(10)};
   height: 100%;
   width: 65%;
+  ${EditorElements};
 `;
 const WaxBottomRightInfo = styled.div``;
 const InfoContainer = styled.div`
diff --git a/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js b/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js
index 8bb9cc23dd4fe33a50a9002e2ab44dd6bc3a2c3e..7cda592c3793204aa1a4972139afb46432b839e6 100644
--- a/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js
+++ b/editors/demo/src/Editoria/layout/EditoriaMobileLayout.js
@@ -152,7 +152,7 @@ const InfoContainer = styled.div`
   right: 21px;
   z-index: 1;
 `;
-const InfoArea = styled.div``;
+
 let surfaceHeight = 500;
 let notesHeight = 150;
 
@@ -178,7 +178,7 @@ const BottomRightInfo = ComponentPlugin('BottomRightInfo');
 
 const EditoriaLayout = ({ editor }) => {
   const {
-    view: { main },
+    pmViews: { main },
   } = useContext(WaxContext);
 
   const notes = main && getNotes(main);
diff --git a/wax-prosemirror-components/src/components/images/ImageUpload.js b/wax-prosemirror-components/src/components/images/ImageUpload.js
index ced0b167c948e3d8618f233c878520d991f7f340..146f4cb4fac25291ef15336c29e0d98a140b243e 100644
--- a/wax-prosemirror-components/src/components/images/ImageUpload.js
+++ b/wax-prosemirror-components/src/components/images/ImageUpload.js
@@ -35,15 +35,15 @@ const ImageUpload = ({ item, fileUpload, view }) => {
           nodeFound = node;
         }
       });
-      context.view.main.dispatch(
-        context.view.main.state.tr
+      main.dispatch(
+        main.state.tr
           .setMeta('outsideView', activeViewId)
           .setSelection(
             new TextSelection(
-              context.view.main.state.tr.doc.resolve(
+              main.state.tr.doc.resolve(
                 nodeFound.pos +
                   2 +
-                  context.view[activeViewId].state.selection.to,
+                  context.pmViews[activeViewId].state.selection.to,
               ),
             ),
           ),
diff --git a/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js b/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js
index b4e28d9e16c2b5a97b8179692b13e8156109f734..7193c658e82d6c8e1367b4fc67868bf912c94346 100644
--- a/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js
+++ b/wax-prosemirror-components/src/components/trackChanges/ConnectedTrackChange.js
@@ -20,7 +20,7 @@ const ConnectedTrackChangeStyled = styled.div`
 
 export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
   const context = useContext(WaxContext);
-  const { app, activeView, view } = context;
+  const { app, activeView, pmViews } = context;
   const user = app.config.get('user');
   const [isActive, setIsActive] = useState(false);
   const { state, dispatch } = activeView;
@@ -41,30 +41,32 @@ export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
     if (viewId !== 'main') context.updateView({}, viewId);
 
     const allTracksWithSameId = DocumentHelpers.findAllMarksWithSameId(
-      view[viewId].state,
+      pmViews[viewId].state,
       trackData,
     );
     const maxPos = maxBy(allTracksWithSameId, 'pos');
     maxPos.pos += last(allTracksWithSameId).node.nodeSize;
 
-    view[viewId].dispatch(
-      view[viewId].state.tr.setSelection(
-        new TextSelection(view[viewId].state.tr.doc.resolve(maxPos.pos - 1)),
+    pmViews[viewId].dispatch(
+      pmViews[viewId].state.tr.setSelection(
+        new TextSelection(pmViews[viewId].state.tr.doc.resolve(maxPos.pos - 1)),
       ),
     );
 
-    view[viewId].focus();
+    pmViews[viewId].focus();
     return true;
   };
 
   const focusOnBlcock = trackData => {
-    view[viewId].dispatch(
-      view[viewId].state.tr.setSelection(
-        new TextSelection(view[viewId].state.tr.doc.resolve(trackData.pos + 1)),
+    pmViews[viewId].dispatch(
+      pmViews[viewId].state.tr.setSelection(
+        new TextSelection(
+          pmViews[viewId].state.tr.doc.resolve(trackData.pos + 1),
+        ),
       ),
     );
 
-    view[viewId].focus();
+    pmViews[viewId].focus();
     return true;
   };
 
@@ -80,13 +82,13 @@ export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
   const onClickAccept = () => {
     const acceptConfig = app.config.get('config.AcceptTrackChangeService');
     acceptTrackChange(state, dispatch, user, activeTrackChange, acceptConfig);
-    view[viewId].focus();
+    pmViews[viewId].focus();
   };
 
   const onClickReject = () => {
     const rejectConfig = app.config.get('config.RejectTrackChangeService');
     rejectTrackChange(state, dispatch, user, activeTrackChange, rejectConfig);
-    view[viewId].focus();
+    pmViews[viewId].focus();
   };
 
   const MemorizedTrackChange = useMemo(
diff --git a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js
index ae06eb172783686bf387dbaa50d76b75bf2acaa3..38554a98ff033e35e0473ade81e5b674c5450e22 100644
--- a/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js
+++ b/wax-prosemirror-components/src/components/trackChanges/TrackChangeOptionsComponent.js
@@ -189,13 +189,13 @@ const TrackChangeOptionsComponent = ({
 }) => {
   const [isShownTrack, setIsShownTrack] = useState(false);
   const menuItems = groups[0].items;
-  const { app, view, activeView, activeViewId } = useContext(WaxContext);
-  const { state } = view;
+  const { app, pmViews, activeView, activeViewId } = useContext(WaxContext);
+  const { state } = activeView;
   const user = app.config.get('user');
   const hideShowPlugin = app.PmPlugins.get('hideShowPlugin');
-  const inlineTracks = getInlineTracks(view.main).length;
-  const blockTracks = getTrackBlockNodes(view.main).length;
-  const comments = getComments(view.main).length;
+  const inlineTracks = getInlineTracks(pmViews.main).length;
+  const blockTracks = getTrackBlockNodes(pmViews.main).length;
+  const comments = getComments(pmViews.main).length;
 
   const renderTools = () => {
     const tools = [];
@@ -223,7 +223,7 @@ const TrackChangeOptionsComponent = ({
               if (menuItem.name === 'ShowHideTrackChange') {
                 setShowHidden(!showHiddenValue);
                 hideShowPlugin.props.setHideShow(showHiddenValue);
-                each(view, (singleView, viewId) => {
+                each(pmViews, (singleView, viewId) => {
                   singleView.dispatch(singleView.state.tr);
                 });
                 return false;
diff --git a/wax-prosemirror-core/src/helpers/helpers.js b/wax-prosemirror-core/src/helpers/helpers.js
index 1f5b4d5123e80dab9b0e0db111b8a7f25b87312e..974c013098ce3b969338c729014dc9b7ee0c8afa 100644
--- a/wax-prosemirror-core/src/helpers/helpers.js
+++ b/wax-prosemirror-core/src/helpers/helpers.js
@@ -35,10 +35,10 @@ const getDocContent = (schema, serializer, targetFormat, context) => {
   let content = '';
   alterNotesSchema(schema);
   if (targetFormat === 'JSON') {
-    content = context.app.context.view.main.state.doc.content;
+    content = context.app.context.pmViews.main.state.doc.content;
   } else {
     const serialize = serializer(schema);
-    content = serialize(context.app.context.view.main.state.doc.content);
+    content = serialize(context.app.context.pmViews.main.state.doc.content);
   }
   revertNotesSchema(content);
 
diff --git a/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js b/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js
index 36cda93bad53357a86297cd903cfad9e7a3c4183..6946e9f8395ec7b7b0e9c44ed99775994cb61843 100644
--- a/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js
+++ b/wax-prosemirror-services/src/EssayService/EssayAnswerNodeView.js
@@ -24,8 +24,8 @@ export default class EssayAnswerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class EssayAnswerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,7 +46,7 @@ export default class EssayAnswerNodeView extends AbstractNodeView {
   }
 
   stopEvent(event) {
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestion.js b/wax-prosemirror-services/src/EssayService/EssayQuestion.js
index cae89533fd0d2698908e4323b12df015c3755ab5..8ab9229ea540b4d658a16b6c664347622e403f80 100644
--- a/wax-prosemirror-services/src/EssayService/EssayQuestion.js
+++ b/wax-prosemirror-services/src/EssayService/EssayQuestion.js
@@ -24,30 +24,32 @@ const checkifEmpty = view => {
 };
 
 const createEmptyParagraph = (context, newAnswerId) => {
-  if (context.view[newAnswerId]) {
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+  const { pmViews } = context;
+
+  if (pmViews[newAnswerId]) {
+    pmViews[newAnswerId].dispatch(
+      pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          pmViews[newAnswerId].state.selection.$anchor,
+          pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    if (context.view[newAnswerId].dispatch) {
-      const type = context.view.main.state.schema.nodes.paragraph;
-      context.view[newAnswerId].dispatch(
-        context.view[newAnswerId].state.tr.insert(0, type.create()),
+    if (pmViews[newAnswerId].dispatch) {
+      const type = pmViews.main.state.schema.nodes.paragraph;
+      pmViews[newAnswerId].dispatch(
+        pmViews[newAnswerId].state.tr.insert(0, type.create()),
       );
     }
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+    pmViews[newAnswerId].dispatch(
+      pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          pmViews[newAnswerId].state.selection.$anchor,
+          pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    context.view[newAnswerId].focus();
+    pmViews[newAnswerId].focus();
   }
 };
 
diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js b/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js
index c69fefc4c754a84c868390d7e111e5f86625727d..7f98b85d5c864c78d4173e5a6d21ac6408889cde 100644
--- a/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js
+++ b/wax-prosemirror-services/src/EssayService/EssayQuestionNodeView.js
@@ -24,8 +24,8 @@ export default class EssayQuestionNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class EssayQuestionNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,7 +46,7 @@ export default class EssayQuestionNodeView extends AbstractNodeView {
   }
 
   stopEvent(event) {
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/EssayService/components/EditorComponent.js b/wax-prosemirror-services/src/EssayService/components/EditorComponent.js
index 8bfcdfd54cc0bcc91bf3bc3c5a724db874165df7..753a54d147e5ee0c42e532ed0c284a38a6e47c28 100644
--- a/wax-prosemirror-services/src/EssayService/components/EditorComponent.js
+++ b/wax-prosemirror-services/src/EssayService/components/EditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -45,10 +44,14 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
-  const { activeViewId } = context;
+  const {
+    app,
+    activeViewId,
+    pmViews: { main },
+  } = context;
   let questionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -69,7 +72,7 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -99,11 +102,11 @@ const EditorComponent = ({ node, view, getPos }) => {
         disallowedTools: ['Images', 'Lists', 'lift', 'MultipleChoice'],
         handleDOMEvents: {
           mousedown: () => {
-            context.view[activeViewId].dispatch(
-              context.view[activeViewId].state.tr.setSelection(
+            context.pmViews[activeViewId].dispatch(
+              context.pmViews[activeViewId].state.tr.setSelection(
                 TextSelection.between(
-                  context.view[activeViewId].state.selection.$anchor,
-                  context.view[activeViewId].state.selection.$head,
+                  context.pmViews[activeViewId].state.selection.$anchor,
+                  context.pmViews[activeViewId].state.selection.$head,
                 ),
               ),
             );
diff --git a/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js
index 97a50f237d1f3c25a781f7d4f64a6aee99fddb21..6962786007db6214ddac09a98b51dfc2be68b663 100644
--- a/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js
+++ b/wax-prosemirror-services/src/EssayService/components/EssayAnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -51,9 +50,13 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let essayAnswerView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -100,7 +103,7 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -131,15 +134,15 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
         handleDOMEvents: {
           mousedown: () => {
             context.updateView({}, questionId);
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
@@ -172,8 +175,8 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
   }, []);
 
   const dispatchTransaction = tr => {
-    const outerTr = context.view.main.state.tr;
-    context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+    const outerTr = main.state.tr;
+    main.dispatch(outerTr.setMeta('outsideView', questionId));
     const { state, transactions } = essayAnswerView.state.applyTransaction(tr);
     context.updateView({}, questionId);
     essayAnswerView.updateState(state);
@@ -185,7 +188,7 @@ const EssayAnswerComponent = ({ node, view, getPos }) => {
           outerTr.step(steps[j].map(offsetMap));
       }
       if (outerTr.docChanged)
-        context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+        main.dispatch(outerTr.setMeta('outsideView', questionId));
     }
   };
 
diff --git a/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js b/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js
index b2add961236125b7824974d90774a5acd8561a7f..32f7389700001bf56649f788e427212343dd57b6 100644
--- a/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js
+++ b/wax-prosemirror-services/src/EssayService/components/EssayQuestionComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -49,9 +48,14 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
+
   let essayQuestionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -98,7 +102,7 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -129,15 +133,15 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
         handleDOMEvents: {
           mousedown: () => {
             context.updateView({}, questionId);
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
@@ -173,8 +177,8 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
   }, []);
 
   const dispatchTransaction = tr => {
-    const outerTr = context.view.main.state.tr;
-    context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+    const outerTr = main.state.tr;
+    main.dispatch(outerTr.setMeta('outsideView', questionId));
     const { state, transactions } = essayQuestionView.state.applyTransaction(
       tr,
     );
@@ -188,7 +192,7 @@ const EssayQuestionComponent = ({ node, view, getPos }) => {
           outerTr.step(steps[j].map(offsetMap));
       }
       if (outerTr.docChanged)
-        context.view.main.dispatch(outerTr.setMeta('outsideView', questionId));
+        main.dispatch(outerTr.setMeta('outsideView', questionId));
     }
   };
 
diff --git a/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js b/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js
index 84090be501c7a846357f7f570d52e7d327f4356a..ceec5b108adedc32472e49db7be9dbe5445869c6 100644
--- a/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js
+++ b/wax-prosemirror-services/src/EssayService/components/ToolBarBtn.js
@@ -16,7 +16,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
   const { icon, label, select, title } = item;
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
     activeView,
   } = useContext(WaxContext);
 
@@ -38,7 +38,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
         label={label}
         onMouseDown={e => {
           e.preventDefault();
-          item.run(context.view.main, context);
+          item.run(main, context);
         }}
         title={title}
       />
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js
index c24768949ef504d0c5bd5e266b46f7f031dd75d4..b61ea7648c2e5d119b0dae6912c24b15eae9fba8 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapContainerNodeView.js
@@ -24,8 +24,8 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,7 +46,7 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
   }
 
   selectNode() {
-    this.context.view[this.node.attrs.id].focus();
+    this.context.pmViews[this.node.attrs.id].focus();
   }
 
   stopEvent(event) {
@@ -55,9 +55,9 @@ export default class FillTheGapContainerNodeView extends AbstractNodeView {
     }
 
     return (
-      this.context.view[this.node.attrs.id] !== undefined &&
+      this.context.pmViews[this.node.attrs.id] !== undefined &&
       event.target !== undefined &&
-      this.context.view[this.node.attrs.id].dom.contains(event.target)
+      this.context.pmViews[this.node.attrs.id].dom.contains(event.target)
     );
   }
 }
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js
index 701c2cf6c6b24688f1d56ce32fcd59f827e298b3..068d2d702dbb84bb1d235154859fc02f2e3064fe 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/FillTheGapNodeView.js
@@ -24,8 +24,8 @@ export default class FillTheGapNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class FillTheGapNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -46,18 +46,14 @@ export default class FillTheGapNodeView extends AbstractNodeView {
   }
 
   selectNode() {
-    this.context.view[this.node.attrs.id].focus();
+    this.context.pmViews[this.node.attrs.id].focus();
   }
 
   stopEvent(event) {
     return (
-      this.context.view[this.node.attrs.id] !== undefined &&
+      this.context.pmViews[this.node.attrs.id] !== undefined &&
       event.target !== undefined &&
-      this.context.view[this.node.attrs.id].dom.contains(event.target)
+      this.context.pmViews[this.node.attrs.id].dom.contains(event.target)
     );
   }
-
-  ignoreMutation() {
-    return true;
-  }
 }
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js
index a3083d23735c2dd36f6d5c06a648d64e034bc1ef..27bdb40de01cd3bc9d30f6990d809244e213803e 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/ContainerEditor.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -36,9 +35,14 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
+
   let gapContainerView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -59,7 +63,7 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   finalPlugins = finalPlugins.concat([...plugins]);
 
@@ -86,15 +90,15 @@ const EditorComponent = ({ node, view, getPos }) => {
         ],
         handleDOMEvents: {
           mousedown: () => {
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js
index dfd2113730625622d4f81db87debcaff2d121fef..77521c768002fe8065c12f1132b0dce9da14a115 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/EditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -49,9 +48,13 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let gapView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -72,12 +75,10 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   finalPlugins = finalPlugins.concat([...plugins]);
 
-  const { activeViewId } = context;
-
   useEffect(() => {
     gapView = new EditorView(
       {
@@ -103,15 +104,15 @@ const EditorComponent = ({ node, view, getPos }) => {
         ],
         handleDOMEvents: {
           mousedown: () => {
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js
index c9f4b2045207dee993360f85bf67cdeadf05d3e0..0afd56b88d70dcfe21cf7faabbe0af016fef4375 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FeedbackComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useState, useEffect } from 'react';
@@ -35,13 +34,16 @@ const FeedBackInput = styled.input`
 
 export default ({ node, view, getPos, readOnly }) => {
   const context = useContext(WaxContext);
+  const {
+    pmViews: { main },
+  } = context;
   const [feedBack, setFeedBack] = useState(' ');
   const [isFirstRun, setFirstRun] = useState(true);
   const [typing, setTyping] = useState(false);
   const feedBackRef = useRef(null);
 
   useEffect(() => {
-    const allNodes = getNodes(context.view.main);
+    const allNodes = getNodes(main);
     allNodes.forEach(singleNode => {
       if (singleNode.node.attrs.id === node.attrs.id) {
         if (!typing || context.transaction.meta.inputType === 'Redo') {
@@ -53,14 +55,14 @@ export default ({ node, view, getPos, readOnly }) => {
         }
       }
     });
-  }, [getNodes(context.view.main)]);
+  }, [getNodes(main)]);
 
   const handleKeyDown = e => {
     setTyping(true);
     if (e.key === 'Backspace') {
-      context.view.main.dispatch(
-        context.view.main.state.tr.setSelection(
-          TextSelection.create(context.view.main.state.tr.doc, null),
+      main.dispatch(
+        main.state.tr.setSelection(
+          TextSelection.create(main.state.tr.doc, null),
         ),
       );
     }
@@ -75,10 +77,8 @@ export default ({ node, view, getPos, readOnly }) => {
   };
 
   const onFocus = () => {
-    context.view.main.dispatch(
-      context.view.main.state.tr.setSelection(
-        TextSelection.create(context.view.main.state.tr.doc, null),
-      ),
+    main.dispatch(
+      main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)),
     );
   };
 
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js
index af75baa87ac5376d688545444a386132fe25078b..acdb1891e804c7c11f1ced0ef166fb5dda2819b9 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/FillTheGapContainerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import { WaxContext } from 'wax-prosemirror-core';
@@ -21,10 +20,10 @@ const FillTheGapWrapper = styled.div`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
diff --git a/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js b/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js
index 0ce5483c72f38ca0ac68ed32ba7dff9d95a0d028..6c496ca743ba19848098639ffb9a755f0c4c1d3b 100644
--- a/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js
+++ b/wax-prosemirror-services/src/FillTheGapQuestionService/components/InputComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useState, useEffect } from 'react';
@@ -21,6 +20,10 @@ const AnswerInput = styled.input`
 
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
+  const {
+    pmViews: { main },
+  } = context;
+
   const [answer, setAnswer] = useState(' ');
   const [typing, setTyping] = useState(false);
   const answerRef = useRef(null);
@@ -30,9 +33,9 @@ export default ({ node, view, getPos }) => {
   const handleKeyDown = e => {
     setTyping(true);
     if (e.key === 'Backspace') {
-      context.view.main.dispatch(
-        context.view.main.state.tr.setSelection(
-          TextSelection.create(context.view.main.state.tr.doc, null),
+      main.dispatch(
+        main.state.tr.setSelection(
+          TextSelection.create(main.state.tr.doc, null),
         ),
       );
     }
@@ -47,10 +50,8 @@ export default ({ node, view, getPos }) => {
   };
 
   const onFocus = () => {
-    context.view.main.dispatch(
-      context.view.main.state.tr.setSelection(
-        TextSelection.create(context.view.main.state.tr.doc, null),
-      ),
+    main.dispatch(
+      main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)),
     );
   };
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js
index c00da4041d4b54711280d4542ff97e31ff382117..87d8faffa08feed825607e918e6ef4f84eee4542 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceContainerNodeView.js
@@ -24,8 +24,8 @@ export default class MultipleChoiceContainerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class MultipleChoiceContainerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class MultipleChoiceContainerNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js
index 83f5ee867d95e702edfabb64bbe163653b9bb9b4..7d4f72ac05dc97a905f22c2db170ee248cc3b069 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceNodeView.js
@@ -24,8 +24,8 @@ export default class MultipleChoiceNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class MultipleChoiceNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class MultipleChoiceNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js
index 1e0db88629cc08a63a6c8dd1b8537a83d1ac1bff..ab17544531a80cf8c19a7eb922088c73ee1c5b85 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectContainerNodeView.js
@@ -24,8 +24,8 @@ export default class MultipleChoiceSingleCorrectContainerNodeView extends Abstra
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class MultipleChoiceSingleCorrectContainerNodeView extends Abstra
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class MultipleChoiceSingleCorrectContainerNodeView extends Abstra
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js
index 87956baad8530b370453458a75681225e406f03c..eb1c12b91722a7f4ebceb598cc38080124c615ed 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/MultipleChoiceSingleCorrectNodeView.js
@@ -25,8 +25,8 @@ export default class MultipleChoiceSingleCorrectNodeView extends AbstractNodeVie
   update(node) {
     // if (!node.sameMarkup(this.node)) return false;
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -35,7 +35,7 @@ export default class MultipleChoiceSingleCorrectNodeView extends AbstractNodeVie
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -50,7 +50,7 @@ export default class MultipleChoiceSingleCorrectNodeView extends AbstractNodeVie
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js
index 40bc5a9fdb59543597c3557fc8b987089d9075b0..51fa05cc2bd638d4811c502b8b306eef591b7e28 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/QuestionMultipleSingleNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionMultipleSingleNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionMultipleSingleNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionMultipleSingleNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js
index 0ac82c38f04283ec12cc0b54badb30962ec0e7e6..a9cc737b28eed559cfad8775c7a3f8357f9c2a5e 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/AnswerComponent.js
@@ -83,11 +83,11 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
   // eslint-disable-next-line react/destructuring-assignment
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +115,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'multiple_choice_single_correct') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.multiple_choice_single_correct.create(
+          const answerOption = main.state.config.schema.nodes.multiple_choice_single_correct.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js
index 7259ea37b9b009d29ef9d8ffa31c36f4f1644dd1..e29755eff0cce192cbc59111bfc6c003e1b1423e 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -12,15 +11,14 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checked, setChecked] = useState(false);
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
   const {
-    view,
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   useEffect(() => {
     const allNodes = getNodes(main);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js
index de265aa479bc9474d99f2e67ef85bb9acdbab4b3..9430d97a5ecdd5671ad2279e648481537c426927 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/QuestionNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js
index f373d41b5f2bf7218dbdb4bbec9a8c56d851abc6..8dd46b2866c8d02afb8dfc057604fa19a99870e9 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/QuestionTrueFalseNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionTrueFalseNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionTrueFalseNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionTrueFalseNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js
index f5f145d389e4e56f03b4df42fa506a37c799c23a..d5d916320b1b0d9a0bad310b1e4928becd8e8e74 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseContainerNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseContainerNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseContainerNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseContainerNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js
index ad6eb44d84f0bb4cdee64a43c96fd813422556de..9720ca22b80786883ea66027674ebe4a9a1db8d0 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/TrueFalseNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js
index ace315a66427d6031b78f4e90b9f5a6be956f1c8..63acff33a489017d810c9646dcf91b8017c95085 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/AnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import styled from 'styled-components';
@@ -84,10 +83,10 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +114,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'true_false') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.true_false.create(
+          const answerOption = main.state.config.schema.nodes.true_false.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js
index 1c85aec23ef3c9738dacd661d3b98b7dfd969c6f..1d7c9b5b0089eff1031004605a21819917aa6e67 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -12,13 +11,12 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
 
   const {
-    view,
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js
index 9496fe060164aadcb1cb2d06e5f4d51d1c41fd4b..3da377957a63bf0f781874b3f60a66009d929bda 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/QuestionTrueFalseSingleNodeView.js
@@ -24,8 +24,8 @@ export default class QuestionTrueFalseSingleNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class QuestionTrueFalseSingleNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class QuestionTrueFalseSingleNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js
index d8a8ed1c179151f15a6c1da18c459499eced5555..5d61b38529f5ff0445874ebcae57368fe8ffbe86 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectContainerNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseSingleCorrectContainerNodeView extends AbstractNod
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseSingleCorrectContainerNodeView extends AbstractNod
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseSingleCorrectContainerNodeView extends AbstractNod
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js
index d57375c18a0d127cb8bbc958004cc113d00c2289..c7319c19e6e27bdb0a0f0481027937f0c80744ad 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/TrueFalseSingleCorrectNodeView.js
@@ -24,8 +24,8 @@ export default class TrueFalseSingleCorrectNodeView extends AbstractNodeView {
 
   update(node) {
     this.node = node;
-    if (this.context.view[node.attrs.id]) {
-      const { state } = this.context.view[node.attrs.id];
+    if (this.context.pmViews[node.attrs.id]) {
+      const { state } = this.context.pmViews[node.attrs.id];
       const start = node.content.findDiffStart(state.doc.content);
       if (start != null) {
         let { a: endA, b: endB } = node.content.findDiffEnd(state.doc.content);
@@ -34,7 +34,7 @@ export default class TrueFalseSingleCorrectNodeView extends AbstractNodeView {
           endA += overlap;
           endB += overlap;
         }
-        this.context.view[node.attrs.id].dispatch(
+        this.context.pmViews[node.attrs.id].dispatch(
           state.tr
             .replace(start, endB, node.slice(start, endA))
             .setMeta('fromOutside', true),
@@ -49,7 +49,7 @@ export default class TrueFalseSingleCorrectNodeView extends AbstractNodeView {
     if (event.target.type === 'text') {
       return true;
     }
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 }
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js
index 65d103b75f5689417f68d9e04f82d2d2b2ee5613..8a097de4801230e198479b5ad2f44e43388fb986 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/AnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import styled from 'styled-components';
@@ -84,10 +83,10 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +114,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'true_false_single_correct') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.true_false_single_correct.create(
+          const answerOption = main.state.config.schema.nodes.true_false_single_correct.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js
index fd6b919857ab937c377d99743b36b17faaef0804..7dcb3653dec051841bdd6c5c4f42731cb7b6b127 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/TrueFalseSingleCorrectQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -13,13 +12,12 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
 
   const {
-    view,
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js
index 8e3a4e730376d492af9b1126e01ef2c2e9b5212f..14c6c4233005ab3603e7ee3755e54631a8ed3ad9 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/AnswerComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 import React, { useContext } from 'react';
 import styled from 'styled-components';
@@ -84,10 +83,10 @@ const StyledIconAction = styled(Icon)`
 export default ({ node, view, getPos }) => {
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
   const isEditable = main.props.editable(editable => {
     return editable;
@@ -115,26 +114,22 @@ export default ({ node, view, getPos }) => {
 
   const addOption = nodeId => {
     const newAnswerId = uuidv4();
-    context.view.main.state.doc.descendants((editorNode, index) => {
+    main.state.doc.descendants((editorNode, index) => {
       if (editorNode.type.name === 'multiple_choice') {
         if (editorNode.attrs.id === nodeId) {
-          context.view.main.dispatch(
-            context.view.main.state.tr.setSelection(
+          main.dispatch(
+            main.state.tr.setSelection(
               new TextSelection(
-                context.view.main.state.tr.doc.resolve(
-                  editorNode.nodeSize + index,
-                ),
+                main.state.tr.doc.resolve(editorNode.nodeSize + index),
               ),
             ),
           );
 
-          const answerOption = context.view.main.state.config.schema.nodes.multiple_choice.create(
+          const answerOption = main.state.config.schema.nodes.multiple_choice.create(
             { id: newAnswerId },
             Fragment.empty,
           );
-          context.view.main.dispatch(
-            context.view.main.state.tr.replaceSelectionWith(answerOption),
-          );
+          main.dispatch(main.state.tr.replaceSelectionWith(answerOption));
           // create Empty Paragraph
           setTimeout(() => {
             helpers.createEmptyParagraph(context, newAnswerId);
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
index 81ff309ef077e5174b68aa8e1b0cc1363d7f5b0f..d95a0be4778818c1efb61a20443fe995b510d3f8 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/EditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -57,9 +56,13 @@ const EditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let questionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -80,7 +83,7 @@ const EditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -110,24 +113,24 @@ const EditorComponent = ({ node, view, getPos }) => {
         disallowedTools: ['Images', 'Lists', 'lift', 'MultipleChoice'],
         handleDOMEvents: {
           mousedown: () => {
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
             );
-            // context.view[activeViewId].dispatch(
-            //   context.view[activeViewId].state.tr.setSelection(
+            // context.pmViews[activeViewId].dispatch(
+            //   context.pmViews[activeViewId].state.tr.setSelection(
             //     TextSelection.between(
-            //       context.view[activeViewId].state.selection.$anchor,
-            //       context.view[activeViewId].state.selection.$head,
+            //       context.pmViews[activeViewId].state.selection.$anchor,
+            //       context.pmViews[activeViewId].state.selection.$head,
             //     ),
             //   ),
             // );
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
index b7b59b96c8b95b6e36a5fa6b4a9bc4f7a233d454..5ff3ac5cb90ed2cb16f549f45f73e022791f4ddf 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useState, useEffect } from 'react';
@@ -33,13 +32,18 @@ const FeedBackInput = styled.input`
 
 export default ({ node, view, getPos, readOnly }) => {
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
+
   const [feedBack, setFeedBack] = useState(' ');
   const [isFirstRun, setFirstRun] = useState(true);
   const [typing, setTyping] = useState(false);
   const feedBackRef = useRef(null);
 
   useEffect(() => {
-    const allNodes = getNodes(context.view.main);
+    const allNodes = getNodes(main);
     allNodes.forEach(singleNode => {
       if (singleNode.node.attrs.id === node.attrs.id) {
         if (!typing || context.transaction.meta.inputType === 'Redo') {
@@ -51,14 +55,14 @@ export default ({ node, view, getPos, readOnly }) => {
         }
       }
     });
-  }, [getNodes(context.view.main)]);
+  }, [getNodes(main)]);
 
   const handleKeyDown = e => {
     setTyping(true);
     if (e.key === 'Backspace') {
-      context.view.main.dispatch(
-        context.view.main.state.tr.setSelection(
-          TextSelection.create(context.view.main.state.tr.doc, null),
+      main.dispatch(
+        main.state.tr.setSelection(
+          TextSelection.create(main.state.tr.doc, null),
         ),
       );
     }
@@ -69,11 +73,11 @@ export default ({ node, view, getPos, readOnly }) => {
   };
 
   const saveFeedBack = () => {
-    const allNodes = getNodes(context.view.main);
+    const allNodes = getNodes(main);
     allNodes.forEach(singleNode => {
       if (singleNode.node.attrs.id === node.attrs.id) {
-        context.view.main.dispatch(
-          context.view.main.state.tr.setNodeMarkup(getPos(), undefined, {
+        main.dispatch(
+          main.state.tr.setNodeMarkup(getPos(), undefined, {
             ...singleNode.node.attrs,
             feedback: feedBack,
           }),
@@ -85,10 +89,8 @@ export default ({ node, view, getPos, readOnly }) => {
   };
 
   const onFocus = () => {
-    context.view.main.dispatch(
-      context.view.main.state.tr.setSelection(
-        TextSelection.create(context.view.main.state.tr.doc, null),
-      ),
+    main.dispatch(
+      main.state.tr.setSelection(TextSelection.create(main.state.tr.doc, null)),
     );
   };
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
index 74e41034ce2aaf1d573745646611ee71f71f9ba6..eee47af1e3745b0f02a28f93d86272bd391f2109 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/QuestionEditorComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useContext, useRef, useEffect } from 'react';
@@ -61,9 +60,13 @@ const QuestionEditorComponent = ({ node, view, getPos }) => {
   const editorRef = useRef();
 
   const context = useContext(WaxContext);
+  const {
+    app,
+    pmViews: { main },
+  } = context;
   let questionView;
   const questionId = node.attrs.id;
-  const isEditable = context.view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
@@ -115,7 +118,7 @@ const QuestionEditorComponent = ({ node, view, getPos }) => {
     };
   };
 
-  const plugins = [keymap(createKeyBindings()), ...context.app.getPlugins()];
+  const plugins = [keymap(createKeyBindings()), ...app.getPlugins()];
 
   // eslint-disable-next-line no-shadow
   const createPlaceholder = placeholder => {
@@ -146,15 +149,15 @@ const QuestionEditorComponent = ({ node, view, getPos }) => {
         handleDOMEvents: {
           mousedown: () => {
             context.updateView({}, questionId);
-            context.view.main.dispatch(
-              context.view.main.state.tr
+            main.dispatch(
+              main.state.tr
                 .setMeta('outsideView', questionId)
                 .setSelection(
                   new TextSelection(
-                    context.view.main.state.tr.doc.resolve(
+                    main.state.tr.doc.resolve(
                       getPos() +
                         2 +
-                        context.view[questionId].state.selection.to,
+                        context.pmViews[questionId].state.selection.to,
                     ),
                   ),
                 ),
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js
index b0887514ea196df3ee084241d0286397a29ca19a..a046213c51b3675f74305a2ec10e3bfbcd8bd335 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/SwitchComponent.js
@@ -1,4 +1,3 @@
-/* eslint-disable react/destructuring-assignment */
 /* eslint-disable react/prop-types */
 
 import React, { useState, useContext, useEffect } from 'react';
@@ -11,13 +10,13 @@ const CustomSwitch = ({ node, getPos }) => {
   const [checked, setChecked] = useState(false);
   const [checkedAnswerMode, setCheckedAnswerMode] = useState(false);
   const {
-    view,
-    view: { main },
+    pmViews,
+    pmViews: { main },
   } = context;
 
-  const customProps = context.view.main.props.customValues;
+  const customProps = main.props.customValues;
 
-  const isEditable = view.main.props.editable(editable => {
+  const isEditable = main.props.editable(editable => {
     return editable;
   });
 
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js
index 84090be501c7a846357f7f570d52e7d327f4356a..ceec5b108adedc32472e49db7be9dbe5445869c6 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/ToolBarBtn.js
@@ -16,7 +16,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
   const { icon, label, select, title } = item;
   const context = useContext(WaxContext);
   const {
-    view: { main },
+    pmViews: { main },
     activeView,
   } = useContext(WaxContext);
 
@@ -38,7 +38,7 @@ const ToolBarBtn = ({ view = {}, item }) => {
         label={label}
         onMouseDown={e => {
           e.preventDefault();
-          item.run(context.view.main, context);
+          item.run(main, context);
         }}
         title={title}
       />
diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
index 869a539e4bb8d711a792da278758de385d0b96d5..c2ca1ce7550d12b7a14631911a9dba38b41ea668 100644
--- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
+++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js
@@ -5,30 +5,30 @@ import { Fragment } from 'prosemirror-model';
 import { findWrapping } from 'prosemirror-transform';
 
 const createEmptyParagraph = (context, newAnswerId) => {
-  if (context.view[newAnswerId]) {
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+  if (context.pmViews[newAnswerId]) {
+    context.pmViews[newAnswerId].dispatch(
+      context.pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          context.pmViews[newAnswerId].state.selection.$anchor,
+          context.pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    if (context.view[newAnswerId].dispatch) {
-      const type = context.view.main.state.schema.nodes.paragraph;
-      context.view[newAnswerId].dispatch(
-        context.view[newAnswerId].state.tr.insert(0, type.create()),
+    if (context.pmViews[newAnswerId].dispatch) {
+      const type = context.pmViews.main.state.schema.nodes.paragraph;
+      context.pmViews[newAnswerId].dispatch(
+        context.pmViews[newAnswerId].state.tr.insert(0, type.create()),
       );
     }
-    context.view[newAnswerId].dispatch(
-      context.view[newAnswerId].state.tr.setSelection(
+    context.pmViews[newAnswerId].dispatch(
+      context.pmViews[newAnswerId].state.tr.setSelection(
         TextSelection.between(
-          context.view[newAnswerId].state.selection.$anchor,
-          context.view[newAnswerId].state.selection.$head,
+          context.pmViews[newAnswerId].state.selection.$anchor,
+          context.pmViews[newAnswerId].state.selection.$head,
         ),
       ),
     );
-    context.view[newAnswerId].focus();
+    context.pmViews[newAnswerId].focus();
   }
 };
 
@@ -79,7 +79,7 @@ const createOptions = (main, context, parentType, questionType, answerType) => {
   tr.replaceSelectionWith(secondOption);
   dispatch(tr);
   setTimeout(() => {
-    context.view[question.attrs.id].focus();
+    context.pmViews[question.attrs.id].focus();
     //   createEmptyParagraph(context, firstOption.attrs.id);
     //   createEmptyParagraph(context, secondOption.attrs.id);
     //   createEmptyParagraph(context, question.attrs.id);
diff --git a/wax-prosemirror-services/src/PortalService/AbstractNodeView.js b/wax-prosemirror-services/src/PortalService/AbstractNodeView.js
index 37304f52eeade721d2852fa5f622cf9a02ec8ed6..9d50b0c70b166acb5bd0c0df4b4ac4c83a09a7e0 100644
--- a/wax-prosemirror-services/src/PortalService/AbstractNodeView.js
+++ b/wax-prosemirror-services/src/PortalService/AbstractNodeView.js
@@ -36,7 +36,7 @@ export default class AbstractNodeView {
   }
 
   stopEvent(event) {
-    const innerView = this.context.view[this.node.attrs.id];
+    const innerView = this.context.pmViews[this.node.attrs.id];
     return innerView && innerView.dom.contains(event.target);
   }
 
diff --git a/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js b/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js
index d92127eb15375b2fba6b42c58bac40129c3fcd9b..30bb239e4e98b60789e4856e55a76cad68d120b3 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropComponent.js
@@ -43,7 +43,7 @@ const DropComponent = ({ title, view, tools }) => {
   const {
     activeView,
     activeViewId,
-    view: { main },
+    pmViews: { main },
   } = context;
   const { state } = view;