diff --git a/wax-prosemirror-components/src/components/Button.js b/wax-prosemirror-components/src/components/Button.js
index fa2e0d6efdf838a56b2adf9ed84dd48d5d8b8276..4edf40a850e80af769f651662087cfc29de8652a 100644
--- a/wax-prosemirror-components/src/components/Button.js
+++ b/wax-prosemirror-components/src/components/Button.js
@@ -10,6 +10,7 @@ const Button = ({ view = {}, item }) => {
   const {
     view: { main },
     activeViewId,
+    activeView,
   } = useContext(WaxContext);
 
   if (onlyOnMain) view = main;
@@ -21,10 +22,9 @@ const Button = ({ view = {}, item }) => {
     run(editorState, dispatch);
   };
 
-  const isActive = active && active(state, activeViewId);
+  const isActive = active(state, activeViewId) && select(state, activeViewId);
 
-  const isDisabled =
-    enable && !enable(state) && !(select && select(state, activeViewId));
+  const isDisabled = !select(state, activeViewId, activeView);
 
   const MenuButtonComponent = useMemo(
     () => (
diff --git a/wax-prosemirror-components/src/components/ImageUpload.js b/wax-prosemirror-components/src/components/ImageUpload.js
index b94c0a7e544cd9a2c0c8c322de878770755537f4..8a0be50407b680f36e518ff3d24c7095991b50f9 100644
--- a/wax-prosemirror-components/src/components/ImageUpload.js
+++ b/wax-prosemirror-components/src/components/ImageUpload.js
@@ -17,13 +17,15 @@ const ImageUpload = ({ item, fileUpload, view }) => {
   const inputRef = useRef(null);
   const handleMouseDown = () => inputRef.current.click();
 
+  const isDisabled = !item.select(view.state, activeViewId);
+
   const ImageUploadComponent = useMemo(
     () => (
       <Wrapper>
         <label htmlFor="file-upload">
           <MenuButton
             active={false}
-            disabled={!(item.select && item.select(view.state, activeViewId))}
+            disabled={isDisabled}
             iconName={item.icon}
             onMouseDown={handleMouseDown}
             title="Upload Image"
@@ -38,7 +40,7 @@ const ImageUpload = ({ item, fileUpload, view }) => {
         </label>
       </Wrapper>
     ),
-    [],
+    [isDisabled],
   );
 
   return ImageUploadComponent;
diff --git a/wax-prosemirror-components/src/components/TableDropDown.js b/wax-prosemirror-components/src/components/TableDropDown.js
index 1e7c6a1108ed7ff7c31a0191ef3613864f46402c..2fa2afc9b439aa75ace7b66b7fb51fdd869a3f23 100644
--- a/wax-prosemirror-components/src/components/TableDropDown.js
+++ b/wax-prosemirror-components/src/components/TableDropDown.js
@@ -1,7 +1,8 @@
 /* eslint react/prop-types: 0 */
-import React from 'react';
+import React, { useMemo, useContext } from 'react';
 import styled from 'styled-components';
 import * as tablesFn from 'prosemirror-tables';
+import { WaxContext } from 'wax-prosemirror-core';
 import Dropdown from 'react-dropdown';
 import 'react-dropdown/style.css';
 
@@ -44,16 +45,24 @@ const dropDownOptions = [
 ];
 
 const TableDropDown = ({ view: { dispatch, state }, item }) => {
-  return (
-    <DropdownStyled
-      options={dropDownOptions}
-      onChange={option => {
-        item.run(state, dispatch, tablesFn[option.value]);
-      }}
-      placeholder="Table Options"
-      select={item.select && item.select(state)}
-    />
+  const { activeView } = useContext(WaxContext);
+
+  const isDisabled = item.select(activeView.state);
+  const TableDropDownComponent = useMemo(
+    () => (
+      <DropdownStyled
+        options={dropDownOptions}
+        onChange={option => {
+          item.run(state, dispatch, tablesFn[option.value]);
+        }}
+        placeholder="Table Options"
+        select={isDisabled}
+      />
+    ),
+    [isDisabled],
   );
+
+  return TableDropDownComponent;
 };
 
 export default TableDropDown;
diff --git a/wax-prosemirror-components/src/components/tables/CreateTable.js b/wax-prosemirror-components/src/components/tables/CreateTable.js
index f88c45dc8ecf97e2ee5ad549753edf2eae85c613..42a08ffa972278bde01cb1b1fcf79b814d0d8c09 100644
--- a/wax-prosemirror-components/src/components/tables/CreateTable.js
+++ b/wax-prosemirror-components/src/components/tables/CreateTable.js
@@ -46,8 +46,7 @@ const CreateTable = ({ view = {}, item }) => {
     setIsOpen(!isOpen);
   };
 
-  const isDisabled =
-    enable && !enable(state) && !(select && select(state, activeViewId));
+  const isDisabled = !select(state, activeViewId);
 
   useOnClickOutside(ref, () => setIsOpen(false));
 
diff --git a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js
index d4debc43ae838a8e90c3ae21a6e32f7ebb3efb82..1d1c1ba1c60ed5aeefb30054d8f0c8c2cf2da2e1 100644
--- a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js
+++ b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js
@@ -104,10 +104,10 @@ class AcceptTrackChange extends Tools {
     };
   }
 
-  select = (state, activeViewId) => {
+  select = (state, activeViewId, activeView) => {
     const {
       selection: { from, to },
-    } = state;
+    } = activeView.state;
     if (from === to && activeViewId !== 'main') return false;
     return true;
   };
diff --git a/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js
index 4a7e4de3dc9928364c38d88208d38b9a65369817..bd9dfcd83761ed0b98cf0359479c828a7b0e57f7 100644
--- a/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js
+++ b/wax-prosemirror-services/src/TrackChangeService/RejectTrackChangeService/RejectTrackChange.js
@@ -112,10 +112,10 @@ class RejectTrackChange extends Tools {
     };
   }
 
-  select = (state, activeViewId) => {
+  select = (state, activeViewId, activeView) => {
     const {
       selection: { from, to },
-    } = state;
+    } = activeView.state;
     if (from === to && activeViewId !== 'main') return false;
     return true;
   };
diff --git a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js b/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js
index 60b888079cbf5c6a995142cde9d996a929f65a97..e13f376e21abab21675848bb0da8ad14af66cedc 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/DisplayToolGroupService/Display.js
@@ -1,22 +1,22 @@
-import React from "react";
-import { injectable, inject } from "inversify";
-import { LeftMenuTitle } from "wax-prosemirror-components";
-import ToolGroup from "../../lib/ToolGroup";
+import React from 'react';
+import { injectable, inject } from 'inversify';
+import { LeftMenuTitle } from 'wax-prosemirror-components';
+import ToolGroup from '../../lib/ToolGroup';
 
 @injectable()
 class Display extends ToolGroup {
   tools = [];
-  title = <LeftMenuTitle title="Display" />;
+  title = (<LeftMenuTitle title="Display" />);
 
   constructor(
-    @inject("Author") author,
-    @inject("Title") title,
-    @inject("SubTitle") subtitle,
-    @inject("EpigraphProse") epigraphprose,
-    @inject("EpigraphPoetry") epigraphpoetry,
-    @inject("Heading1") heading1,
-    @inject("Heading2") heading2,
-    @inject("Heading3") heading3
+    @inject('Author') author,
+    @inject('Title') title,
+    @inject('SubTitle') subtitle,
+    @inject('EpigraphProse') epigraphprose,
+    @inject('EpigraphPoetry') epigraphpoetry,
+    @inject('Heading1') heading1,
+    @inject('Heading2') heading2,
+    @inject('Heading3') heading3,
   ) {
     super();
     this.tools = [
@@ -27,7 +27,7 @@ class Display extends ToolGroup {
       epigraphpoetry,
       heading1,
       heading2,
-      heading3
+      heading3,
     ];
   }
 }
diff --git a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js
index c09c5a0f000ca50f0f4d4a32806fbd00a53e392b..8c9629cf5c8269034553ebd2382c5855d4f1afad 100644
--- a/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js
+++ b/wax-prosemirror-services/src/WaxToolGroups/TextToolGroupService/Text.js
@@ -1,20 +1,20 @@
-import React from "react";
-import { injectable, inject } from "inversify";
-import { LeftMenuTitle } from "wax-prosemirror-components";
-import ToolGroup from "../../lib/ToolGroup";
+import React from 'react';
+import { injectable, inject } from 'inversify';
+import { LeftMenuTitle } from 'wax-prosemirror-components';
+import ToolGroup from '../../lib/ToolGroup';
 
 @injectable()
 class Text extends ToolGroup {
   tools = [];
-  title = <LeftMenuTitle title="Text" />;
+  title = (<LeftMenuTitle title="Text" />);
 
   constructor(
-    @inject("Paragraph") paragraph,
-    @inject("ParagraphContinued") paragraphContinued,
-    @inject("ExtractProse") extractProse,
-    @inject("ExtractPoetry") extractPoetry,
-    @inject("SourceNote") sourceNote,
-    @inject("BlockQuote") blockQuote
+    @inject('Paragraph') paragraph,
+    @inject('ParagraphContinued') paragraphContinued,
+    @inject('ExtractProse') extractProse,
+    @inject('ExtractPoetry') extractPoetry,
+    @inject('SourceNote') sourceNote,
+    @inject('BlockQuote') blockQuote,
   ) {
     super();
     this.tools = [
@@ -23,7 +23,7 @@ class Text extends ToolGroup {
       extractProse,
       extractPoetry,
       sourceNote,
-      blockQuote
+      blockQuote,
     ];
   }
 }