diff --git a/editors/demo/src/Editoria/config/config.js b/editors/demo/src/Editoria/config/config.js
index d3928aee7130b30ddcb0a4142d91185818c7db75..65fa24bc4361e60250a7a78c36bf0490d3ffd935 100644
--- a/editors/demo/src/Editoria/config/config.js
+++ b/editors/demo/src/Editoria/config/config.js
@@ -3,49 +3,30 @@ import { debounce } from 'lodash';
 
 import {
   InlineAnnotationsService,
-  AnnotationToolGroupService,
   ImageService,
-  ImageToolGroupService,
   LinkService,
   ListsService,
-  ListToolGroupService,
   BaseService,
-  BaseToolGroupService,
   DisplayBlockLevelService,
-  DisplayToolGroupService,
   TextBlockLevelService,
-  TextToolGroupService,
   NoteService,
-  NoteToolGroupService,
   TrackChangeService,
   CommentsService,
   CodeBlockService,
-  CodeBlockToolGroupService,
   DisplayTextToolGroupService,
   MathService,
   FindAndReplaceService,
   EditingSuggestingService,
-  TrackingAndEditingToolGroupService,
   FullScreenService,
-  FullScreenToolGroupService,
   SpecialCharactersService,
-  SpecialCharactersToolGroupService,
   HighlightService,
-  TextHighlightToolGroupServices,
-  EditorInfoToolGroupServices,
   BottomInfoService,
   TransformService,
-  TransformToolGroupService,
-  TrackOptionsToolGroupService,
-  TrackCommentOptionsToolGroupService,
-  CustomTagInlineToolGroupService,
-  CustomTagBlockToolGroupService,
   CustomTagService,
   disallowPasteImagesPlugin,
-  // YjsService,
   BlockDropDownToolGroupService,
-  // TitleToolGroupService,
   AskAiContentService,
+  // YjsService,
 } from 'wax-prosemirror-services';
 
 import { TablesService, tableEditing, columnResizing } from 'wax-table-service';
@@ -179,7 +160,7 @@ export default {
   ],
   ImageService: { showAlt: true },
   CommentsService: {
-    showTitle: true
+    showTitle: true,
   },
   CustomTagService: {
     tags: [
@@ -201,15 +182,12 @@ export default {
   },
 
   services: [
-    // new TitleToolGroupService(),
     // new YjsService(),
     new BlockDropDownToolGroupService(),
     new AskAiContentService(),
     new CustomTagService(),
     new DisplayBlockLevelService(),
-    new DisplayToolGroupService(),
     new TextBlockLevelService(),
-    new TextToolGroupService(),
     new ListsService(),
     new LinkService(),
     new InlineAnnotationsService(),
@@ -218,32 +196,16 @@ export default {
     new ImageService(),
     new TablesService(),
     new BaseService(),
-    new BaseToolGroupService(),
     new NoteService(),
-    new ImageToolGroupService(),
-    new AnnotationToolGroupService(),
-    new NoteToolGroupService(),
-    new ListToolGroupService(),
     new CodeBlockService(),
-    new CodeBlockToolGroupService(),
     new EditingSuggestingService(),
     new DisplayTextToolGroupService(),
     new MathService(),
     new FindAndReplaceService(),
-    new TrackingAndEditingToolGroupService(),
     new FullScreenService(),
-    new FullScreenToolGroupService(),
     new SpecialCharactersService(),
-    new SpecialCharactersToolGroupService(),
     new HighlightService(),
-    new TextHighlightToolGroupServices(),
-    new EditorInfoToolGroupServices(),
     new BottomInfoService(),
     new TransformService(),
-    new TransformToolGroupService(),
-    new TrackOptionsToolGroupService(),
-    new TrackCommentOptionsToolGroupService(),
-    new CustomTagInlineToolGroupService(),
-    new CustomTagBlockToolGroupService(),
   ],
 };
diff --git a/editors/demo/src/Editoria/config/configMobile.js b/editors/demo/src/Editoria/config/configMobile.js
index a87d5ec5e72338992b4c82cba17085f1fd71d4d5..15fbfdfa48e6f14d8df0271f5c049ddc5b03053d 100644
--- a/editors/demo/src/Editoria/config/configMobile.js
+++ b/editors/demo/src/Editoria/config/configMobile.js
@@ -1,35 +1,22 @@
 import { emDash, ellipsis } from 'prosemirror-inputrules';
 import {
-  AnnotationToolGroupService,
   ImageService,
   InlineAnnotationsService,
   LinkService,
   ListsService,
-  ListToolGroupService,
   BaseService,
-  BaseToolGroupService,
   DisplayBlockLevelService,
-  DisplayToolGroupService,
-  ImageToolGroupService,
   TextBlockLevelService,
-  TextToolGroupService,
   NoteService,
-  NoteToolGroupService,
   EditingSuggestingService,
   TrackChangeService,
   CommentsService,
   CodeBlockService,
-  CodeBlockToolGroupService,
   DisplayTextToolGroupService,
   BlockDropDownToolGroupService,
   HighlightService,
-  TextHighlightToolGroupServices,
-  EditorInfoToolGroupServices,
   BottomInfoService,
   TransformService,
-  TransformToolGroupService,
-  CustomTagInlineToolGroupService,
-  CustomTagBlockToolGroupService,
   CustomTagService,
 } from 'wax-prosemirror-services';
 
@@ -92,9 +79,7 @@ export default {
   //as it matters on how PM treats nodes and marks
   services: [
     new DisplayBlockLevelService(),
-    new DisplayToolGroupService(),
     new TextBlockLevelService(),
-    new TextToolGroupService(),
     new ListsService(),
     new LinkService(),
     new InlineAnnotationsService(),
@@ -103,25 +88,14 @@ export default {
     new ImageService(),
     new TablesService(),
     new BaseService(),
-    new BaseToolGroupService(),
     new NoteService(),
-    new ImageToolGroupService(),
-    new AnnotationToolGroupService(),
-    new NoteToolGroupService(),
-    new ListToolGroupService(),
     new CodeBlockService(),
-    new CodeBlockToolGroupService(),
     new EditingSuggestingService(),
     new DisplayTextToolGroupService(),
     new BlockDropDownToolGroupService(),
     new HighlightService(),
-    new TextHighlightToolGroupServices(),
-    new EditorInfoToolGroupServices(),
     new BottomInfoService(),
     new TransformService(),
-    new TransformToolGroupService(),
     new CustomTagService(),
-    new CustomTagInlineToolGroupService(),
-    new CustomTagBlockToolGroupService(),
   ],
 };
diff --git a/editors/demo/src/HHMI/HHMI.js b/editors/demo/src/HHMI/HHMI.js
index 4c1d96095280c4c17b57306e3de83d781cecafdc..baed57f47ca8cabab56848efe5910e6ea477edd2 100644
--- a/editors/demo/src/HHMI/HHMI.js
+++ b/editors/demo/src/HHMI/HHMI.js
@@ -195,7 +195,7 @@ const Hhmi = () => {
         // targetFormat="JSON"
         readonly={readOnly}
         layout={HhmiLayout}
-        onChange={source => console.log(source)}
+        // onChange={source => console.log(source)}
       />
     </>
   );
diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js
index 163f2146245f787854ad18b184bfe9b8764bd928..2ae6496a69b42bcfa52c64959d8a110ff9d687dc 100644
--- a/editors/demo/src/HHMI/config/config.js
+++ b/editors/demo/src/HHMI/config/config.js
@@ -1,18 +1,13 @@
 import { emDash, ellipsis } from 'prosemirror-inputrules';
 import {
   InlineAnnotationsService,
-  AnnotationToolGroupService,
   ImageService,
-  ImageToolGroupService,
   LinkService,
   ListsService,
-  ListToolGroupService,
   BaseService,
-  BaseToolGroupService,
   DisplayTextToolGroupService,
   MathService,
   FullScreenService,
-  FullScreenToolGroupService,
 } from 'wax-prosemirror-services';
 
 import { QuestionsService } from 'wax-questions-service';
@@ -68,13 +63,8 @@ export default {
     new ImageService(),
     new TablesService(),
     new BaseService(),
-    new BaseToolGroupService(),
-    new ImageToolGroupService(),
-    new AnnotationToolGroupService(),
-    new ListToolGroupService(),
     new DisplayTextToolGroupService(),
     new MathService(),
     new FullScreenService(),
-    new FullScreenToolGroupService(),
   ],
 };
diff --git a/editors/demo/src/NCBI/config/configEnter.js b/editors/demo/src/NCBI/config/configEnter.js
index 5b9ae803c71e27f6b3aa2105290897cd264d0837..22977ee5f9cea6a8db7606f749c753fd7a7565ea 100644
--- a/editors/demo/src/NCBI/config/configEnter.js
+++ b/editors/demo/src/NCBI/config/configEnter.js
@@ -1,11 +1,8 @@
 import { DefaultSchema } from 'wax-prosemirror-core';
 import {
   InlineAnnotationsService,
-  AnnotationToolGroupService,
   ListsService,
-  ListToolGroupService,
   BaseService,
-  BaseToolGroupService,
   LinkService,
   EnterService,
 } from 'wax-prosemirror-services';
@@ -48,12 +45,9 @@ const configEnter = getContent => ({
   services: [
     new EnterService(),
     new InlineAnnotationsService(),
-    new AnnotationToolGroupService(),
     new LinkService(),
-    new ListToolGroupService(),
     new BaseService(),
     new ListsService(),
-    new BaseToolGroupService(),
   ],
 });
 
diff --git a/editors/demo/src/NCBI/config/configMini.js b/editors/demo/src/NCBI/config/configMini.js
index fa3b786b475bfae0d7793c6f8bb1950b94bbcbf2..c97443f85d91bacd035f6f2426b496a2383d3f95 100644
--- a/editors/demo/src/NCBI/config/configMini.js
+++ b/editors/demo/src/NCBI/config/configMini.js
@@ -1,11 +1,8 @@
 import { DefaultSchema } from 'wax-prosemirror-core';
 import {
   InlineAnnotationsService,
-  AnnotationToolGroupService,
   ListsService,
-  ListToolGroupService,
   BaseService,
-  BaseToolGroupService,
   LinkService,
 } from 'wax-prosemirror-services';
 
@@ -32,12 +29,9 @@ const config = {
 
   services: [
     new InlineAnnotationsService(),
-    new AnnotationToolGroupService(),
     new LinkService(),
-    new ListToolGroupService(),
     new BaseService(),
     new ListsService(),
-    new BaseToolGroupService(),
   ],
 };
 
diff --git a/editors/demo/src/NCBI/config/configTitle.js b/editors/demo/src/NCBI/config/configTitle.js
index eea8127077b872b4f077de8d34369fb8e8a49969..83de5727d8188bfb5a2d40cab8e7c7889751f766 100644
--- a/editors/demo/src/NCBI/config/configTitle.js
+++ b/editors/demo/src/NCBI/config/configTitle.js
@@ -1,8 +1,6 @@
 import {
   InlineAnnotationsService,
-  AnnotationToolGroupService,
   BaseService,
-  BaseToolGroupService,
   LinkService,
 } from 'wax-prosemirror-services';
 
@@ -58,10 +56,8 @@ const configTitle = {
 
   services: [
     new InlineAnnotationsService(),
-    new AnnotationToolGroupService(),
     new LinkService(),
     new BaseService(),
-    new BaseToolGroupService(),
   ],
 };
 
diff --git a/editors/demo/src/OEN/config/config.js b/editors/demo/src/OEN/config/config.js
index 159cad8845432ee10f071910d351c663ccc6c38b..c468e6258ded6d4f29b721cb17604ec33bbe1d2b 100644
--- a/editors/demo/src/OEN/config/config.js
+++ b/editors/demo/src/OEN/config/config.js
@@ -3,48 +3,27 @@ import { debounce } from 'lodash';
 
 import {
   InlineAnnotationsService,
-  AnnotationToolGroupService,
   ImageService,
-  ImageToolGroupService,
   LinkService,
   ListsService,
-  ListToolGroupService,
   BaseService,
-  BaseToolGroupService,
   DisplayBlockLevelService,
-  DisplayToolGroupService,
   TextBlockLevelService,
-  TextToolGroupService,
   NoteService,
-  NoteToolGroupService,
   TrackChangeService,
   CommentsService,
   CodeBlockService,
-  CodeBlockToolGroupService,
   // DisplayTextToolGroupService,
   MathService,
   FindAndReplaceService,
   EditingSuggestingService,
-  TrackingAndEditingToolGroupService,
   FullScreenService,
-  FullScreenToolGroupService,
   SpecialCharactersService,
-  SpecialCharactersToolGroupService,
   HighlightService,
-  TextHighlightToolGroupServices,
-  EditorInfoToolGroupServices,
   BottomInfoService,
   TransformService,
-  TransformToolGroupService,
-  TrackOptionsToolGroupService,
-  TrackCommentOptionsToolGroupService,
-  CustomTagInlineToolGroupService,
-  CustomTagBlockToolGroupService,
   CustomTagService,
   OENContainersService,
-  OENLeftToolGroupService,
-  OENContainersToolGroupService,
-  OENAsideToolGroupService,
 } from 'wax-prosemirror-services';
 import { TablesService, tableEditing, columnResizing } from 'wax-table-service';
 
@@ -203,14 +182,10 @@ export default {
   },
 
   services: [
-    new OENContainersToolGroupService(),
     new OENContainersService(),
-    new OENLeftToolGroupService(),
     new CustomTagService(),
     new DisplayBlockLevelService(),
-    new DisplayToolGroupService(),
     new TextBlockLevelService(),
-    new TextToolGroupService(),
     new ListsService(),
     new LinkService(),
     new InlineAnnotationsService(),
@@ -219,32 +194,16 @@ export default {
     new ImageService(),
     new TablesService(),
     new BaseService(),
-    new BaseToolGroupService(),
     new NoteService(),
-    new ImageToolGroupService(),
-    new AnnotationToolGroupService(),
-    new NoteToolGroupService(),
-    new ListToolGroupService(),
     new CodeBlockService(),
-    new CodeBlockToolGroupService(),
     new EditingSuggestingService(),
     // new DisplayTextToolGroupService(),
     new MathService(),
     new FindAndReplaceService(),
-    new TrackingAndEditingToolGroupService(),
     new FullScreenService(),
-    new FullScreenToolGroupService(),
     new SpecialCharactersService(),
-    new SpecialCharactersToolGroupService(),
     new HighlightService(),
-    new TextHighlightToolGroupServices(),
-    new EditorInfoToolGroupServices(),
     new BottomInfoService(),
     new TransformService(),
-    new TransformToolGroupService(),
-    new TrackOptionsToolGroupService(),
-    new TrackCommentOptionsToolGroupService(),
-    new CustomTagInlineToolGroupService(),
-    new CustomTagBlockToolGroupService(),
   ],
 };
diff --git a/wax-prosemirror-core/index.js b/wax-prosemirror-core/index.js
index f6f7a4641af02902f6e26a69aa53d73baeff8075..0bc457d6c463f7ed616e3429d3e1e7e10dbef1e2 100644
--- a/wax-prosemirror-core/index.js
+++ b/wax-prosemirror-core/index.js
@@ -18,7 +18,6 @@ export { default as EditoriaSchema } from './src/utilities/schema/EditoriaSchema
 export { default as Middleware } from './src/utilities/lib/Middleware';
 export { default as ToolGroup } from './src/utilities/lib/ToolGroup';
 export { default as Tools } from './src/utilities/lib/Tools';
-export { default as Translation } from './src/helpers/Translation';
 
 /* Base Services */
 export { default as LayoutService } from './src/config/defaultServices/LayoutService/LayoutService';
@@ -52,3 +51,8 @@ export { default as Button } from './src/components/Button';
 /* Plugins */
 
 export { default as FakeCursorPlugin } from './src/config/plugins/FakeCursorPlugin';
+
+// export * from 'prosemirror-state';
+// export * from 'prosemirror-view';
+// export * from 'prosemirror-model';
+// export * from 'prosemirror-transform';
diff --git a/wax-prosemirror-core/src/config/defaultServices/ShortCutsService/ShortCuts.js b/wax-prosemirror-core/src/config/defaultServices/ShortCutsService/ShortCuts.js
index 4c98df4ce580a32ef2402ae9cc02ac1ec48624b1..a2dfada7f8d52fea8344cb3f61e54fbb9ee6661b 100644
--- a/wax-prosemirror-core/src/config/defaultServices/ShortCutsService/ShortCuts.js
+++ b/wax-prosemirror-core/src/config/defaultServices/ShortCutsService/ShortCuts.js
@@ -59,13 +59,13 @@ const backSpaceShortCut = (state, dispatch, view) => {
 };
 
 const pressEnter = (state, dispatch) => {
+  const { $from, to, from } = state.selection;
+
   // Images
-  if (state.selection.$head.parent.type.name === 'figcaption') {
+  if (state.doc.resolve(from).parent.type.name === 'figcaption') {
     return true;
   }
   if (state.selection.node && state.selection.node.type.name === 'image') {
-    const { $from, to } = state.selection;
-
     const same = $from.sharedDepth(to);
 
     const pos = $from.before(same);
@@ -88,8 +88,8 @@ const pressEnter = (state, dispatch) => {
 
     if (
       title.length === 1 &&
-      state.selection.from > title[0].pos + 1 &&
-      state.selection.from < title[0].pos + title[0].node.nodeSize - 1
+      from > title[0].pos + 1 &&
+      from < title[0].pos + title[0].node.nodeSize - 1
     ) {
       return true;
     }
diff --git a/wax-prosemirror-core/src/helpers/Translation.js b/wax-prosemirror-core/src/helpers/Translation.js
deleted file mode 100644
index bd4a85014d549bc2b1d8da7fd4f1fdb7b9e656db..0000000000000000000000000000000000000000
--- a/wax-prosemirror-core/src/helpers/Translation.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/* eslint-disable react/prop-types */
-import React from 'react';
-import { isEmpty } from 'lodash';
-import { useTranslation } from 'react-i18next';
-
-const Translation = ({ label, defaultTr }) => {
-  console.log('asdads', defaultTr);
-  const { t, i18n } = useTranslation();
-  return <>{!isEmpty(i18n) && i18n.exists(label) ? t(label) : defaultTr}</>;
-};
-
-export default Translation;
diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js
index 6eb076f571da213e395186ac9ea94eb56cdc17a6..af898118e764e1904a5b2276ba1f691c6ab8f193 100644
--- a/wax-prosemirror-services/index.js
+++ b/wax-prosemirror-services/index.js
@@ -19,7 +19,6 @@ export { default as SpecialCharactersService } from './src/SpecialCharactersServ
 export { default as HighlightService } from './src/HighlightService/HightlightService';
 export { default as CounterInfoService } from './src/BottomInfoService/CounterInfoService/CounterInfoService';
 export { default as ShortCutsInfoService } from './src/BottomInfoService/ShortCutsInfoService/ShortCutsInfoService';
-
 export { default as BottomInfoService } from './src/BottomInfoService/BottomInfoService';
 export { default as TransformService } from './src/TransformService/TransformService';
 export { default as EditingSuggestingService } from './src/EditingSuggestingService/EditingSuggestingService';
@@ -32,32 +31,12 @@ export { default as OENContainersService } from './src/OENContainersService/OENC
 export { default as YjsService } from './src/YjsService/YjsService';
 export { default as ExternalAPIContentService } from './src/ExternalAPIContentService/ExternalAPIContentService';
 export { default as AskAiContentService } from './src/AiService/AskAiContentService';
+
 /*
 ToolGroups
 */
-export { default as BaseToolGroupService } from './src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService';
-export { default as AnnotationToolGroupService } from './src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService';
-export { default as ListToolGroupService } from './src/WaxToolGroups/ListToolGroupService/ListToolGroupService';
-export { default as ImageToolGroupService } from './src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService';
-export { default as DisplayToolGroupService } from './src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService';
-export { default as TextToolGroupService } from './src/WaxToolGroups/TextToolGroupService/TextToolGroupService';
-export { default as NoteToolGroupService } from './src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService';
-export { default as CodeBlockToolGroupService } from './src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService';
 export { default as DisplayTextToolGroupService } from './src/WaxToolGroups/DisplayTextToolGroupService/DisplayTextToolGroupService';
 export { default as BlockDropDownToolGroupService } from './src/WaxToolGroups/BlockDropDownToolGroupService/BlockDropDownToolGroupService';
-export { default as TrackingAndEditingToolGroupService } from './src/WaxToolGroups/TrackingAndEditingToolGroupService/TrackingAndEditingToolGroupService';
-export { default as FullScreenToolGroupService } from './src/WaxToolGroups/FullScreenToolGroupService/FullScreenToolGroupService';
-export { default as SpecialCharactersToolGroupService } from './src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService';
-export { default as TextHighlightToolGroupServices } from './src/WaxToolGroups/TextHighlightToolGroupService/TextHighlightToolGroupService';
-export { default as EditorInfoToolGroupServices } from './src/WaxToolGroups/BottomToolGroupService/InfoToolGroupService/EditorInfoToolGroupService';
-export { default as TransformToolGroupService } from './src/WaxToolGroups/TransformToolGroupService/TransformToolGroupService';
-export { default as TrackOptionsToolGroupService } from './src/WaxToolGroups/TrackOptionsToolGroupService/TrackOptionsToolGroupService';
-export { default as TrackCommentOptionsToolGroupService } from './src/WaxToolGroups/TrackCommentOptionsToolGroupService/TrackCommentOptionsToolGroupService';
-export { default as CustomTagInlineToolGroupService } from './src/WaxToolGroups/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroupService';
-export { default as CustomTagBlockToolGroupService } from './src/WaxToolGroups/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroupService';
-export { default as OENContainersToolGroupService } from './src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroupService';
-export { default as OENLeftToolGroupService } from './src/WaxToolGroups/OENLeftToolGroupService/OENLeftToolGroupService';
-export { default as TitleToolGroupService } from './src/WaxToolGroups/TitleToolGroupService/TitleToolGroupService';
 /* Plugins */
 
 export { default as disallowPasteImagesPlugin } from './src/ImageService/plugins/disallowPasteImagesPlugin';
diff --git a/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/Base.js b/wax-prosemirror-services/src/BaseService/BaseToolGroupService/Base.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/Base.js
rename to wax-prosemirror-services/src/BaseService/BaseToolGroupService/Base.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js b/wax-prosemirror-services/src/BaseService/BaseToolGroupService/BaseToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/BaseToolGroupService/BaseToolGroupService.js
rename to wax-prosemirror-services/src/BaseService/BaseToolGroupService/BaseToolGroupService.js
diff --git a/wax-prosemirror-services/src/BaseService/index.js b/wax-prosemirror-services/src/BaseService/index.js
index d8c34fee8d615c93871137379d4cb2fa85330f9e..2f47eeb258e8033a353117a476aec3bc2e3945b9 100644
--- a/wax-prosemirror-services/src/BaseService/index.js
+++ b/wax-prosemirror-services/src/BaseService/index.js
@@ -1,5 +1,11 @@
 import UndoService from './UndoService/UndoService';
 import RedoService from './RedoService/RedoService';
 import SaveService from './SaveService/SaveService';
+import BaseToolGroupService from './BaseToolGroupService/BaseToolGroupService';
 
-export default [new UndoService(), new RedoService(), new SaveService()];
+export default [
+  new UndoService(),
+  new RedoService(),
+  new SaveService(),
+  new BaseToolGroupService(),
+];
diff --git a/wax-prosemirror-services/src/WaxToolGroups/BottomToolGroupService/InfoToolGroupService/EditorInfoToolGroupService.js b/wax-prosemirror-services/src/BottomInfoService/InfoToolGroupService/EditorInfoToolGroupService.js
similarity index 55%
rename from wax-prosemirror-services/src/WaxToolGroups/BottomToolGroupService/InfoToolGroupService/EditorInfoToolGroupService.js
rename to wax-prosemirror-services/src/BottomInfoService/InfoToolGroupService/EditorInfoToolGroupService.js
index 8bd1e8eaf608ba87b40ed95cb148aa6050736f1b..d67eaf8356320af3c92d8b09683191646fb48b65 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/BottomToolGroupService/InfoToolGroupService/EditorInfoToolGroupService.js
+++ b/wax-prosemirror-services/src/BottomInfoService/InfoToolGroupService/EditorInfoToolGroupService.js
@@ -1,10 +1,10 @@
 import { Service } from 'wax-prosemirror-core';
 import InfoToolGroup from './InfoTool';
 
-class EditorInfoToolGroupServices extends Service {
-  name = 'EditorInfoToolGroupServices';
+class EditorInfoToolGroupService extends Service {
+  name = 'EditorInfoToolGroupService';
   register() {
     this.container.bind('InfoToolGroup').to(InfoToolGroup);
   }
 }
-export default EditorInfoToolGroupServices;
+export default EditorInfoToolGroupService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/BottomToolGroupService/InfoToolGroupService/InfoTool.js b/wax-prosemirror-services/src/BottomInfoService/InfoToolGroupService/InfoTool.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/BottomToolGroupService/InfoToolGroupService/InfoTool.js
rename to wax-prosemirror-services/src/BottomInfoService/InfoToolGroupService/InfoTool.js
diff --git a/wax-prosemirror-services/src/BottomInfoService/index.js b/wax-prosemirror-services/src/BottomInfoService/index.js
index 12755dc51e95160a42c62123f0df62fcae5e8c26..7edb939d1221934fed7daaa8b09b3ee3000ef0fa 100644
--- a/wax-prosemirror-services/src/BottomInfoService/index.js
+++ b/wax-prosemirror-services/src/BottomInfoService/index.js
@@ -1,4 +1,9 @@
 import CounterInfoService from './CounterInfoService/CounterInfoService';
 import ShortCutsInfoService from './ShortCutsInfoService/ShortCutsInfoService';
+import EditorInfoToolGroupService from './InfoToolGroupService/EditorInfoToolGroupService';
 
-export default [new CounterInfoService(), new ShortCutsInfoService()];
+export default [
+  new CounterInfoService(),
+  new ShortCutsInfoService(),
+  new EditorInfoToolGroupService(),
+];
diff --git a/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js b/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js
index 29e342d4ece5d805d4cdd6676745c0359afc5d5b..fd7b7400c9dfc2521d8498271dd6764e01e2413f 100644
--- a/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js
+++ b/wax-prosemirror-services/src/CodeBlockService/CodeBlockService.js
@@ -2,6 +2,7 @@ import { Service } from 'wax-prosemirror-core';
 import codeBlockNode from './schema/codeBlockNode';
 import highlightPlugin from './plugins/highlightPlugin';
 import CodeBlockTool from './CodeBlockTool';
+import CodeBlockToolGroupService from './CodeBlockToolGroupService/CodeBlockToolGroupService';
 import './highlightStyles.css';
 
 export default class CodeBlockService extends Service {
@@ -17,4 +18,6 @@ export default class CodeBlockService extends Service {
       code_block: codeBlockNode,
     });
   }
+
+  dependencies = [new CodeBlockToolGroupService()];
 }
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js b/wax-prosemirror-services/src/CodeBlockService/CodeBlockToolGroupService/CodeBlock.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlock.js
rename to wax-prosemirror-services/src/CodeBlockService/CodeBlockToolGroupService/CodeBlock.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService.js b/wax-prosemirror-services/src/CodeBlockService/CodeBlockToolGroupService/CodeBlockToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/CodeBlockToolGroupService/CodeBlockToolGroupService.js
rename to wax-prosemirror-services/src/CodeBlockService/CodeBlockToolGroupService/CodeBlockToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroup.js b/wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroup.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroup.js
rename to wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroup.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroupService.js b/wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroupService.js
rename to wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroup.js b/wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroup.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroup.js
rename to wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroup.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroupService.js b/wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroupService.js
rename to wax-prosemirror-services/src/CustomTagService/CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroupService.js
diff --git a/wax-prosemirror-services/src/CustomTagService/index.js b/wax-prosemirror-services/src/CustomTagService/index.js
index 9be43edbd63afd8bb3494470420268f18637074d..adb4bd0d2b83dcbe07e535dd7a06f17c797be520 100644
--- a/wax-prosemirror-services/src/CustomTagService/index.js
+++ b/wax-prosemirror-services/src/CustomTagService/index.js
@@ -1,4 +1,11 @@
 import CustomTagBlockService from './CustomTagBlockService/CustomTagBlockService';
 import CustomTagInlineService from './CustomTagInlineService/CustomTagInlineService';
+import CustomTagBlockToolGroupService from './CustomTagToolGroupService/CustomTagBlockToolGroupService/CustomTagBlockToolGroupService';
+import CustomTagInlineToolGroupService from './CustomTagToolGroupService/CustomTagInlineToolGroupService/CustomTagInlineToolGroupService';
 
-export default [new CustomTagBlockService(), new CustomTagInlineService()];
+export default [
+  new CustomTagBlockService(),
+  new CustomTagInlineService(),
+  new CustomTagBlockToolGroupService(),
+  new CustomTagInlineToolGroupService(),
+];
diff --git a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js b/wax-prosemirror-services/src/DisplayBlockLevel/DisplayToolGroupService/Display.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js
rename to wax-prosemirror-services/src/DisplayBlockLevel/DisplayToolGroupService/Display.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService.js b/wax-prosemirror-services/src/DisplayBlockLevel/DisplayToolGroupService/DisplayToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/DisplayToolGroupService.js
rename to wax-prosemirror-services/src/DisplayBlockLevel/DisplayToolGroupService/DisplayToolGroupService.js
diff --git a/wax-prosemirror-services/src/DisplayBlockLevel/index.js b/wax-prosemirror-services/src/DisplayBlockLevel/index.js
index cf9bff85eb561b2ac0c54a4814784bede96c25d5..a744cab25bac78a7a058005acd1c3bbe91e67c39 100644
--- a/wax-prosemirror-services/src/DisplayBlockLevel/index.js
+++ b/wax-prosemirror-services/src/DisplayBlockLevel/index.js
@@ -4,6 +4,7 @@ import EpigraphProseService from './EpigraphProseService/EpigraphProseService';
 import HeadingService from './HeadingService/HeadingService';
 import SubTitleService from './SubTitleService/SubTitleService';
 import TitleService from './TitleService/TitleService';
+import DisplayToolGroupService from './DisplayToolGroupService/DisplayToolGroupService';
 
 export default [
   new AuthorService(),
@@ -12,4 +13,5 @@ export default [
   new HeadingService(),
   new SubTitleService(),
   new TitleService(),
+  new DisplayToolGroupService(),
 ];
diff --git a/wax-prosemirror-services/src/FullScreenService/FullScreenService.js b/wax-prosemirror-services/src/FullScreenService/FullScreenService.js
index ffb99230b7edfef4e67f4f085179f650a6834a04..dd31369d8b4df0dae47a5f9734d6c438cafef116 100644
--- a/wax-prosemirror-services/src/FullScreenService/FullScreenService.js
+++ b/wax-prosemirror-services/src/FullScreenService/FullScreenService.js
@@ -1,5 +1,6 @@
 import { Service } from 'wax-prosemirror-core';
 import FullScreenTool from './FullScreenTool';
+import FullScreenToolGroupService from './FullScreenToolGroupService/FullScreenToolGroupService';
 
 class FullScreenService extends Service {
   name = 'FullScreenService';
@@ -7,6 +8,8 @@ class FullScreenService extends Service {
   register() {
     this.container.bind('FullScreenTool').to(FullScreenTool);
   }
+
+  dependencies = [new FullScreenToolGroupService()];
 }
 
 export default FullScreenService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreen.js b/wax-prosemirror-services/src/FullScreenService/FullScreenToolGroupService/FullScreen.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreen.js
rename to wax-prosemirror-services/src/FullScreenService/FullScreenToolGroupService/FullScreen.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenToolGroupService.js b/wax-prosemirror-services/src/FullScreenService/FullScreenToolGroupService/FullScreenToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/FullScreenToolGroupService/FullScreenToolGroupService.js
rename to wax-prosemirror-services/src/FullScreenService/FullScreenToolGroupService/FullScreenToolGroupService.js
diff --git a/wax-prosemirror-services/src/HighlightService/HightlightService.js b/wax-prosemirror-services/src/HighlightService/HightlightService.js
index 71a2b9db5c155e4c8acf184247d2385e4b078c9e..5c9a3f8357c2efeb9b4c30679f72dd36e48da028 100644
--- a/wax-prosemirror-services/src/HighlightService/HightlightService.js
+++ b/wax-prosemirror-services/src/HighlightService/HightlightService.js
@@ -1,6 +1,7 @@
 import { Service } from 'wax-prosemirror-core';
 import highlightMark from './schema/highlightMark';
 import TextHighlightTool from './TextHighlightTool';
+import TextHighlightToolGroupServices from './TextHighlightToolGroupService/TextHighlightToolGroupService';
 
 export default class HighlightService extends Service {
   register() {
@@ -13,4 +14,6 @@ export default class HighlightService extends Service {
       { toWaxSchema: true },
     );
   }
+
+  dependencies = [new TextHighlightToolGroupServices()];
 }
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextHighlightToolGroupService/HightlightToolGroup.js b/wax-prosemirror-services/src/HighlightService/TextHighlightToolGroupService/HightlightToolGroup.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TextHighlightToolGroupService/HightlightToolGroup.js
rename to wax-prosemirror-services/src/HighlightService/TextHighlightToolGroupService/HightlightToolGroup.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextHighlightToolGroupService/TextHighlightToolGroupService.js b/wax-prosemirror-services/src/HighlightService/TextHighlightToolGroupService/TextHighlightToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TextHighlightToolGroupService/TextHighlightToolGroupService.js
rename to wax-prosemirror-services/src/HighlightService/TextHighlightToolGroupService/TextHighlightToolGroupService.js
diff --git a/wax-prosemirror-services/src/ImageService/ImageService.js b/wax-prosemirror-services/src/ImageService/ImageService.js
index e23e55aacb3daff37a58d3eef73a286c3a6b3548..19670ecee680b0206ae07c0bfb140e6459ef7568 100644
--- a/wax-prosemirror-services/src/ImageService/ImageService.js
+++ b/wax-prosemirror-services/src/ImageService/ImageService.js
@@ -3,8 +3,9 @@ import { imageNode, figureCaptionNode, figureNode } from './schema';
 import PlaceHolderPlugin from './plugins/placeHolderPlugin';
 import captionPlugin from './plugins/captionPlugin';
 import Image from './Image';
-import './image.css';
 import AltComponent from './AltComponent';
+import ImageToolGroupService from './ImageToolGroupService/ImageToolGroupService';
+import './image.css';
 
 class ImageService extends Service {
   name = 'ImageService';
@@ -51,6 +52,8 @@ class ImageService extends Service {
       },
     );
   }
+
+  dependencies = [new ImageToolGroupService()];
 }
 
 export default ImageService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js b/wax-prosemirror-services/src/ImageService/ImageToolGroupService/ImageToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/ImageToolGroupService.js
rename to wax-prosemirror-services/src/ImageService/ImageToolGroupService/ImageToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/Images.js b/wax-prosemirror-services/src/ImageService/ImageToolGroupService/Images.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/ImageToolGroupService/Images.js
rename to wax-prosemirror-services/src/ImageService/ImageToolGroupService/Images.js
diff --git a/wax-prosemirror-services/src/ImageService/fileUpload.js b/wax-prosemirror-services/src/ImageService/fileUpload.js
index 901abff9172997b8ea6d1068b27e7517e8a749e8..67cf8ffabb393390961bab87bfdb22812276576b 100644
--- a/wax-prosemirror-services/src/ImageService/fileUpload.js
+++ b/wax-prosemirror-services/src/ImageService/fileUpload.js
@@ -30,7 +30,7 @@ export default (view, fileUpload, placeholderPlugin, context) => file => {
         extraData = fileData.extraData;
       }
 
-      const pos = findPlaceholder(view.state, id, placeholderPlugin);
+      let pos = findPlaceholder(view.state, id, placeholderPlugin);
       // If the content around the placeholder has been deleted, drop
       // the image
       if (pos == null) {
@@ -38,6 +38,12 @@ export default (view, fileUpload, placeholderPlugin, context) => file => {
       }
       // Otherwise, insert it at the placeholder's position, and remove
       // the placeholder
+
+      // if paragraph is empty don't break into new line
+      if (context.pmViews.main.state.doc.resolve(pos).parent.nodeSize === 2) {
+        pos -= 1;
+      }
+
       context.setOption({ uploading: false });
       context.pmViews.main.dispatch(
         context.pmViews.main.state.tr
diff --git a/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService.js b/wax-prosemirror-services/src/InlineAnnotations/AnnotationToolGroupService/AnnotationToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/AnnotationToolGroupService.js
rename to wax-prosemirror-services/src/InlineAnnotations/AnnotationToolGroupService/AnnotationToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/Annotations.js b/wax-prosemirror-services/src/InlineAnnotations/AnnotationToolGroupService/Annotations.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/AnnotationToolGroupService/Annotations.js
rename to wax-prosemirror-services/src/InlineAnnotations/AnnotationToolGroupService/Annotations.js
diff --git a/wax-prosemirror-services/src/InlineAnnotations/index.js b/wax-prosemirror-services/src/InlineAnnotations/index.js
index c9d9565c5337e5cde668c4b2b3b959ccd4f771d9..1d43a1848c1686c387c3015e744730b99ce48616 100644
--- a/wax-prosemirror-services/src/InlineAnnotations/index.js
+++ b/wax-prosemirror-services/src/InlineAnnotations/index.js
@@ -6,6 +6,7 @@ import SuperscriptService from './SuperscriptService/SuperscriptService';
 import StrikeThroughService from './StrikeThroughService/StrikeThroughService';
 import UnderlineService from './UnderlineService/UnderlineService';
 import SmallCapsService from './SmallCapsService/SmallCapsService';
+import AnnotationToolGroupService from './AnnotationToolGroupService/AnnotationToolGroupService';
 
 export default [
   new CodeService(),
@@ -16,4 +17,5 @@ export default [
   new StrikeThroughService(),
   new UnderlineService(),
   new SmallCapsService(),
+  new AnnotationToolGroupService(),
 ];
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js b/wax-prosemirror-services/src/ListsService/ListToolGroupService/ListToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/ListToolGroupService.js
rename to wax-prosemirror-services/src/ListsService/ListToolGroupService/ListToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/Lists.js b/wax-prosemirror-services/src/ListsService/ListToolGroupService/Lists.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/ListToolGroupService/Lists.js
rename to wax-prosemirror-services/src/ListsService/ListToolGroupService/Lists.js
diff --git a/wax-prosemirror-services/src/ListsService/index.js b/wax-prosemirror-services/src/ListsService/index.js
index 34e8c3b5d5b3cec8a47033d9fe4f7800e5582eb0..0f095ceacd035f4116a37baf04630ff23c3ea155 100644
--- a/wax-prosemirror-services/src/ListsService/index.js
+++ b/wax-prosemirror-services/src/ListsService/index.js
@@ -3,6 +3,7 @@ import OrderedListService from './OrderedListService/OrderedListService';
 import JoinUpService from './JoinUpService/JoinUpService';
 import LiftService from './LiftService/LiftService';
 import ListItemService from './ListItemService/ListItemService';
+import ListToolGroupService from './ListToolGroupService/ListToolGroupService';
 
 export default [
   new ListItemService(),
@@ -10,4 +11,5 @@ export default [
   new OrderedListService(),
   new JoinUpService(),
   new LiftService(),
+  new ListToolGroupService(),
 ];
diff --git a/wax-prosemirror-services/src/NoteService/NoteService.js b/wax-prosemirror-services/src/NoteService/NoteService.js
index 597dbb17bdbd1381e0b443658c380564f62a51bf..7ca8098e2b63fc4c1fedb16313dcc179a09bc99c 100644
--- a/wax-prosemirror-services/src/NoteService/NoteService.js
+++ b/wax-prosemirror-services/src/NoteService/NoteService.js
@@ -2,6 +2,7 @@ import { Service } from 'wax-prosemirror-core';
 import footNoteNode from './schema/footNoteNode';
 import Note from './Note';
 import NoteComponent from './NoteComponent';
+import NoteToolGroupService from './NoteToolGroupService/NoteToolGroupService';
 import './note.css';
 
 class NoteService extends Service {
@@ -20,6 +21,8 @@ class NoteService extends Service {
       footnote: footNoteNode,
     });
   }
+
+  dependencies = [new NoteToolGroupService()];
 }
 
 export default NoteService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService.js b/wax-prosemirror-services/src/NoteService/NoteToolGroupService/NoteToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/NoteToolGroupService.js
rename to wax-prosemirror-services/src/NoteService/NoteToolGroupService/NoteToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/Notes.js b/wax-prosemirror-services/src/NoteService/NoteToolGroupService/Notes.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/NoteToolGroupService/Notes.js
rename to wax-prosemirror-services/src/NoteService/NoteToolGroupService/Notes.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENAsideLongToolGroupService/OENAsideLongToolGroup.js b/wax-prosemirror-services/src/OENContainersService/OENAsideLongToolGroupService/OENAsideLongToolGroup.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENAsideLongToolGroupService/OENAsideLongToolGroup.js
rename to wax-prosemirror-services/src/OENContainersService/OENAsideLongToolGroupService/OENAsideLongToolGroup.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENAsideLongToolGroupService/OENAsideLongToolGroupService.js b/wax-prosemirror-services/src/OENContainersService/OENAsideLongToolGroupService/OENAsideLongToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENAsideLongToolGroupService/OENAsideLongToolGroupService.js
rename to wax-prosemirror-services/src/OENContainersService/OENAsideLongToolGroupService/OENAsideLongToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENAsideShortToolGroupService/OENAsideShortToolGroup.js b/wax-prosemirror-services/src/OENContainersService/OENAsideShortToolGroupService/OENAsideShortToolGroup.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENAsideShortToolGroupService/OENAsideShortToolGroup.js
rename to wax-prosemirror-services/src/OENContainersService/OENAsideShortToolGroupService/OENAsideShortToolGroup.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENAsideShortToolGroupService/OENAsideShortToolGroupService.js b/wax-prosemirror-services/src/OENContainersService/OENAsideShortToolGroupService/OENAsideShortToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENAsideShortToolGroupService/OENAsideShortToolGroupService.js
rename to wax-prosemirror-services/src/OENContainersService/OENAsideShortToolGroupService/OENAsideShortToolGroupService.js
diff --git a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
index f5498c498b5dcd96a39c8caac98c0c69c065044b..18c81c74628c7655cd0a7a97ca9a13ed24b844b3 100644
--- a/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
+++ b/wax-prosemirror-services/src/OENContainersService/OENContainersService.js
@@ -9,6 +9,8 @@ import OENAsideShortToolTip from './OENAsideShortToolTip';
 import OENAsideShortToolWarning from './OENAsideShortToolWarning';
 import OENAsideShortToolReminder from './OENAsideShortToolReminder';
 import PopulateHeadingsComponent from './PopulateHeadingsComponent';
+import OENLeftToolGroupService from './OENLeftToolGroupService/OENLeftToolGroupService';
+import OENContainersToolGroupService from './OENContainersToolGroupService/OENContainersToolGroupService';
 import './oenContainers.css';
 
 class OENContainersService extends Service {
@@ -59,6 +61,11 @@ class OENContainersService extends Service {
       },
     );
   }
+
+  dependencies = [
+    new OENLeftToolGroupService(),
+    new OENContainersToolGroupService(),
+  ];
 }
 
 export default OENContainersService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroup.js b/wax-prosemirror-services/src/OENContainersService/OENContainersToolGroupService/OENContainersToolGroup.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroup.js
rename to wax-prosemirror-services/src/OENContainersService/OENContainersToolGroupService/OENContainersToolGroup.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroupService.js b/wax-prosemirror-services/src/OENContainersService/OENContainersToolGroupService/OENContainersToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENContainersToolGroupService/OENContainersToolGroupService.js
rename to wax-prosemirror-services/src/OENContainersService/OENContainersToolGroupService/OENContainersToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENLeftToolGroupService/OENLeftToolGroupService.js b/wax-prosemirror-services/src/OENContainersService/OENLeftToolGroupService/OENLeftToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENLeftToolGroupService/OENLeftToolGroupService.js
rename to wax-prosemirror-services/src/OENContainersService/OENLeftToolGroupService/OENLeftToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/OENLeftToolGroupService/OENTools.js b/wax-prosemirror-services/src/OENContainersService/OENLeftToolGroupService/OENTools.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/OENLeftToolGroupService/OENTools.js
rename to wax-prosemirror-services/src/OENContainersService/OENLeftToolGroupService/OENTools.js
diff --git a/wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersService.js b/wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersService.js
index e157b2d787483ac09240bf0b38448e6599bfc901..146e558931c7f1e3971701ea4e4322b129961b14 100644
--- a/wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersService.js
+++ b/wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersService.js
@@ -1,5 +1,6 @@
 import { Service } from 'wax-prosemirror-core';
 import SpecialCharactersTool from './SpecialCharactersTool';
+import SpecialCharactersToolGroupService from './SpecialCharactersToolGroupService/SpecialCharactersToolGroupService';
 
 class SpecialCharactersService extends Service {
   name = 'SpecialCharactersService';
@@ -7,5 +8,7 @@ class SpecialCharactersService extends Service {
   register() {
     this.container.bind('SpecialCharactersTool').to(SpecialCharactersTool);
   }
+
+  dependencies = [new SpecialCharactersToolGroupService()];
 }
 export default SpecialCharactersService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharacters.js b/wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersToolGroupService/SpecialCharacters.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharacters.js
rename to wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersToolGroupService/SpecialCharacters.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js b/wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js
rename to wax-prosemirror-services/src/SpecialCharactersService/SpecialCharactersToolGroupService/SpecialCharactersToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js b/wax-prosemirror-services/src/TextBlockLevel/TextToolGroupService/Text.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js
rename to wax-prosemirror-services/src/TextBlockLevel/TextToolGroupService/Text.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/TextToolGroupService.js b/wax-prosemirror-services/src/TextBlockLevel/TextToolGroupService/TextToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/TextToolGroupService.js
rename to wax-prosemirror-services/src/TextBlockLevel/TextToolGroupService/TextToolGroupService.js
diff --git a/wax-prosemirror-services/src/TextBlockLevel/index.js b/wax-prosemirror-services/src/TextBlockLevel/index.js
index 011f2941e73d71fdd81052100325f08af5762e97..880387eb2d1c3a584c49613af7131d326d115ea4 100644
--- a/wax-prosemirror-services/src/TextBlockLevel/index.js
+++ b/wax-prosemirror-services/src/TextBlockLevel/index.js
@@ -4,6 +4,7 @@ import ParagraphContinuedService from './ParagraphContinuedService/ParagraphCont
 import ParagraphService from './ParagraphService/ParagraphService';
 import SourceNoteService from './SourceNoteService/SourceNoteService';
 import BlockQuoteService from './BlockQuoteService/BlockQuoteService';
+import TextToolGroupService from './TextToolGroupService/TextToolGroupService';
 
 export default [
   new ExtractPoetryService(),
@@ -12,4 +13,5 @@ export default [
   new ParagraphService(),
   new SourceNoteService(),
   new BlockQuoteService(),
+  new TextToolGroupService(),
 ];
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackCommentOptionsToolGroupService/TrackCommentOptions.js b/wax-prosemirror-services/src/TrackChangeService/TrackCommentOptionsToolGroupService/TrackCommentOptions.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TrackCommentOptionsToolGroupService/TrackCommentOptions.js
rename to wax-prosemirror-services/src/TrackChangeService/TrackCommentOptionsToolGroupService/TrackCommentOptions.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackCommentOptionsToolGroupService/TrackCommentOptionsToolGroupService.js b/wax-prosemirror-services/src/TrackChangeService/TrackCommentOptionsToolGroupService/TrackCommentOptionsToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TrackCommentOptionsToolGroupService/TrackCommentOptionsToolGroupService.js
rename to wax-prosemirror-services/src/TrackChangeService/TrackCommentOptionsToolGroupService/TrackCommentOptionsToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackOptionsToolGroupService/TrackOptions.js b/wax-prosemirror-services/src/TrackChangeService/TrackOptionsToolGroupService/TrackOptions.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TrackOptionsToolGroupService/TrackOptions.js
rename to wax-prosemirror-services/src/TrackChangeService/TrackOptionsToolGroupService/TrackOptions.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackOptionsToolGroupService/TrackOptionsToolGroupService.js b/wax-prosemirror-services/src/TrackChangeService/TrackOptionsToolGroupService/TrackOptionsToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TrackOptionsToolGroupService/TrackOptionsToolGroupService.js
rename to wax-prosemirror-services/src/TrackChangeService/TrackOptionsToolGroupService/TrackOptionsToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackingAndEditingToolGroupService/TrackingAndEditing.js b/wax-prosemirror-services/src/TrackChangeService/TrackingAndEditingToolGroupService/TrackingAndEditing.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TrackingAndEditingToolGroupService/TrackingAndEditing.js
rename to wax-prosemirror-services/src/TrackChangeService/TrackingAndEditingToolGroupService/TrackingAndEditing.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TrackingAndEditingToolGroupService/TrackingAndEditingToolGroupService.js b/wax-prosemirror-services/src/TrackChangeService/TrackingAndEditingToolGroupService/TrackingAndEditingToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TrackingAndEditingToolGroupService/TrackingAndEditingToolGroupService.js
rename to wax-prosemirror-services/src/TrackChangeService/TrackingAndEditingToolGroupService/TrackingAndEditingToolGroupService.js
diff --git a/wax-prosemirror-services/src/TrackChangeService/index.js b/wax-prosemirror-services/src/TrackChangeService/index.js
index ca7a771cb05a5621457b158248715ac0dc7921db..82159a1bc190a1a6f25b0588972e570fcca7911e 100644
--- a/wax-prosemirror-services/src/TrackChangeService/index.js
+++ b/wax-prosemirror-services/src/TrackChangeService/index.js
@@ -2,10 +2,16 @@ import EnableTrackChangeService from './EnableTrackChangeService/EnableTrackChan
 import AcceptTrackChangeService from './AcceptTrackChangeService/AcceptTrackChangeService';
 import RejectTrackChangeService from './RejectTrackChangeService/RejectTrackChangeService';
 import ShowHideTrackChangeService from './ShowHideTrackChangeService/ShowHideTrackChangeService';
+import TrackingAndEditingToolGroupService from './TrackingAndEditingToolGroupService/TrackingAndEditingToolGroupService';
+import TrackOptionsToolGroupService from './TrackOptionsToolGroupService/TrackOptionsToolGroupService';
+import TrackCommentOptionsToolGroupService from './TrackCommentOptionsToolGroupService/TrackCommentOptionsToolGroupService';
 
 export default [
   new EnableTrackChangeService(),
   new AcceptTrackChangeService(),
   new RejectTrackChangeService(),
   new ShowHideTrackChangeService(),
+  new TrackingAndEditingToolGroupService(),
+  new TrackOptionsToolGroupService(),
+  new TrackCommentOptionsToolGroupService(),
 ];
diff --git a/wax-prosemirror-services/src/TransformService/TransformService.js b/wax-prosemirror-services/src/TransformService/TransformService.js
index fec4cb122dc42bcaa00b4e40670ef0e45bdaa6b2..565f68f6c3cefce868c625ce64a39b23b8438be2 100644
--- a/wax-prosemirror-services/src/TransformService/TransformService.js
+++ b/wax-prosemirror-services/src/TransformService/TransformService.js
@@ -1,8 +1,11 @@
 import { Service } from 'wax-prosemirror-core';
 import TransformTool from './TransformTool';
+import TransformToolGroupService from './TransformToolGroupService/TransformToolGroupService';
 
 export default class TransformService extends Service {
   register() {
     this.container.bind('TransformTool').to(TransformTool);
   }
+
+  dependencies = [new TransformToolGroupService()];
 }
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TransformToolGroupService/TransformToolGroup.js b/wax-prosemirror-services/src/TransformService/TransformToolGroupService/TransformToolGroup.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TransformToolGroupService/TransformToolGroup.js
rename to wax-prosemirror-services/src/TransformService/TransformToolGroupService/TransformToolGroup.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TransformToolGroupService/TransformToolGroupService.js b/wax-prosemirror-services/src/TransformService/TransformToolGroupService/TransformToolGroupService.js
similarity index 100%
rename from wax-prosemirror-services/src/WaxToolGroups/TransformToolGroupService/TransformToolGroupService.js
rename to wax-prosemirror-services/src/TransformService/TransformToolGroupService/TransformToolGroupService.js
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/TitleTool.js b/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/TitleTool.js
deleted file mode 100644
index ffb22fec4ab399504d1f968bb056c4ca3ae309a2..0000000000000000000000000000000000000000
--- a/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/TitleTool.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { injectable, inject } from 'inversify';
-import { ToolGroup } from 'wax-prosemirror-core';
-
-@injectable()
-class TitleTool extends ToolGroup {
-  tools = [];
-
-  constructor(@inject('Title') title) {
-    super();
-    this.tools = [title];
-  }
-}
-
-export default TitleTool;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/TitleToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/TitleToolGroupService.js
deleted file mode 100644
index b034747792b976b615b66d0a066312b1b1ca3b56..0000000000000000000000000000000000000000
--- a/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/TitleToolGroupService.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Service } from 'wax-prosemirror-core';
-import TitleTool from './TitleTool';
-import './titleTool.css';
-
-class TitleToolGroupService extends Service {
-  register() {
-    this.container.bind('TitleTool').to(TitleTool);
-  }
-}
-
-export default TitleToolGroupService;
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/titleTool.css b/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/titleTool.css
deleted file mode 100644
index 4f95e94a8c5913c3a6ec11666cf393c8b0616493..0000000000000000000000000000000000000000
--- a/wax-prosemirror-services/src/WaxToolGroups/TitleToolGroupService/titleTool.css
+++ /dev/null
@@ -1,3 +0,0 @@
-  div[data-name='TitleTool'] button {
-      width: 90px;
-  }
\ No newline at end of file
diff --git a/wax-questions-service/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-questions-service/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
index 1634d5bcf22d5a3aae17c3190a6d3d9a78cdebe8..c0d48226b64135462b219977b8a38dc968287807 100644
--- a/wax-questions-service/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
+++ b/wax-questions-service/src/MultipleChoiceQuestionService/components/FeedbackComponent.js
@@ -1,4 +1,4 @@
-import React, { useContext, useRef, useState } from 'react';
+import React, { useContext, useRef, useState, useMemo, useEffect } from 'react';
 import styled from 'styled-components';
 import { TextSelection } from 'prosemirror-state';
 import { WaxContext, DocumentHelpers } from 'wax-prosemirror-core';
@@ -50,6 +50,7 @@ export default ({ node, getPos, readOnly }) => {
     pmViews: { main },
   } = context;
 
+  const [isFirstRun, setFirstRun] = useState(true);
   const [feedBack, setFeedBack] = useState(node.attrs.feedback);
   const feedBackRef = useRef(null);
 
@@ -91,21 +92,30 @@ export default ({ node, getPos, readOnly }) => {
     }, 50);
   };
 
-  return (
-    <FeedBack>
-      <FeedBackLabel>Feedback</FeedBackLabel>
-      <FeedBackInput
-        onChange={feedBackInput}
-        onFocus={onFocus}
-        placeholder="Insert feedback"
-        readOnly={readOnly}
-        ref={feedBackRef}
-        rows="1"
-        style={{ height: setHeight() }}
-        type="text"
-        value={feedBack}
-      />
-    </FeedBack>
+  useEffect(() => {
+    setTimeout(() => {
+      setFirstRun(false);
+    });
+  }, []);
+
+  return useMemo(
+    () => (
+      <FeedBack>
+        <FeedBackLabel>Feedback</FeedBackLabel>
+        <FeedBackInput
+          onChange={feedBackInput}
+          onFocus={onFocus}
+          placeholder="Insert feedback"
+          readOnly={readOnly}
+          ref={feedBackRef}
+          rows="1"
+          style={{ height: setHeight() }}
+          type="text"
+          value={feedBack}
+        />
+      </FeedBack>
+    ),
+    [feedBack, isFirstRun],
   );
 };
 
diff --git a/wax-questions-service/src/MultipleChoiceQuestionService/components/YesNoSwitch.js b/wax-questions-service/src/MultipleChoiceQuestionService/components/YesNoSwitch.js
index 42403815b4f94e8c28bd30b3fe8207e8713c8c37..bbea9e0bd1abe9ca0c207c1673c24419ce865998 100644
--- a/wax-questions-service/src/MultipleChoiceQuestionService/components/YesNoSwitch.js
+++ b/wax-questions-service/src/MultipleChoiceQuestionService/components/YesNoSwitch.js
@@ -52,7 +52,7 @@ const YesNoSwitch = ({
 }) => {
   const { testMode, showFeedBack } = customProps;
 
-  if (showFeedBack) {
+  if (showFeedBack && node) {
     const correct = node.attrs.correct ? 'YES' : 'NO';
     const answer = node.attrs.answer ? 'YES' : 'NO';
     const isCorrect = node.attrs.correct === node.attrs.answer;
diff --git a/wax-questions-service/src/MultipleDropDownService/plugins/FakeCursorPlugin.js b/wax-questions-service/src/MultipleDropDownService/plugins/FakeCursorPlugin.js
index dd51ee312763e546366c118e54eb4e8ef02eb2b4..05b0f57967ed09b97e739a38f73ce24d919c97fa 100644
--- a/wax-questions-service/src/MultipleDropDownService/plugins/FakeCursorPlugin.js
+++ b/wax-questions-service/src/MultipleDropDownService/plugins/FakeCursorPlugin.js
@@ -12,11 +12,13 @@ export default props => {
       init: (_, state) => {},
       apply(tr, prev, _, newState) {
         let createDecoration;
+
         if (
           newState.selection.from === newState.selection.to &&
           Commands.isInTable(newState)
         ) {
-          const widget = document.createElement('fakecursor');
+          const widget = document.createElement('span');
+          widget.setAttribute('id', 'fake-cursor');
           createDecoration = DecorationSet.create(newState.doc, [
             Decoration.widget(newState.selection.from, widget, {
               key: 'fakecursor',
@@ -38,22 +40,34 @@ export default props => {
       handleDOMEvents: {
         focus: (view, event) => {
           event.preventDefault();
-          const fakeCursor = document.getElementsByTagName('fakecursor');
-          if (fakeCursor && fakeCursor[0]) {
-            for (let i = 0; i < fakeCursor.length; i++) {
-              fakeCursor[i].style.visibility = 'hidden';
+          const fakeCursor = document.getElementById('fake-cursor');
+          if (fakeCursor) {
+            if (
+              navigator.userAgent.includes('Firefox') &&
+              view.state.selection.$from.nodeBefore == null
+            ) {
+              fakeCursor.style.visibility = 'hidden';
+            } else {
+              fakeCursor.style.display = 'none';
             }
           }
         },
         blur: (view, event) => {
           event.preventDefault();
           if (view && event.relatedTarget === null) {
-            view.focus();
+            setTimeout(() => {
+              view.focus();
+            });
           } else {
-            const fakeCursor = document.getElementsByTagName('fakecursor');
-            if (fakeCursor && fakeCursor[0]) {
-              for (let i = 0; i < fakeCursor.length; i++) {
-                fakeCursor[i].style.visibility = 'visible';
+            const fakeCursor = document.getElementById('fake-cursor');
+            if (fakeCursor) {
+              if (
+                navigator.userAgent.includes('Firefox') &&
+                view.state.selection.$from.nodeBefore === null
+              ) {
+                fakeCursor.style.visibility = 'visible';
+              } else {
+                fakeCursor.style.display = 'inline';
               }
             }
           }