diff --git a/editors/demo/src/Editors.js b/editors/demo/src/Editors.js
index dac3414348846efed6dfe5010f4d79fc5d323b8a..774b1d788062488961e815ef274ca2a6b3850b23 100644
--- a/editors/demo/src/Editors.js
+++ b/editors/demo/src/Editors.js
@@ -48,7 +48,7 @@ const Editors = () => {
       case 'ncbi':
         break;
       default:
-        return <Editoria />;
+        return <HHMI />;
     }
   };
 
diff --git a/editors/demo/src/HHMI/HHMI.js b/editors/demo/src/HHMI/HHMI.js
index 956b2d8a90c985ef729c79273e102cd0e4a92db0..f9e2283cae44cc909b2e7f06e158bef7a4f5aa28 100644
--- a/editors/demo/src/HHMI/HHMI.js
+++ b/editors/demo/src/HHMI/HHMI.js
@@ -4,6 +4,7 @@ import { Wax } from 'wax-prosemirror-core';
 
 import { HhmiLayout } from './layout';
 import { config } from './config';
+import TestComponent from './MultipleChoiceQuestionService/components/TestComponent';
 
 const renderImage = file => {
   const reader = new FileReader();
@@ -24,6 +25,7 @@ const Hhmi = () => {
         fileUpload={file => renderImage(file)}
         value=""
         targetFormat="JSON"
+        nodeViews={[{ multiple_choice: { component: TestComponent } }]}
         // readonly
         layout={HhmiLayout}
         // onChange={source => console.log(source)}
diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestion.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestion.js
index 7f7cbdec7176531ba0e90177dd93dfc0f242dcef..e921c333d46a9a9c931f816e95b0caaab0c959c8 100644
--- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestion.js
+++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestion.js
@@ -1,5 +1,6 @@
 import { injectable } from 'inversify';
 import { Tools } from 'wax-prosemirror-services';
+import { wrapIn } from 'prosemirror-commands';
 
 @injectable()
 class MultipleChoiceQuestion extends Tools {
@@ -8,7 +9,9 @@ class MultipleChoiceQuestion extends Tools {
   name = 'Multiple Choice';
 
   get run() {
-    return (state, dispatch) => {};
+    return (state, dispatch) => {
+      wrapIn(state.config.schema.nodes.multiple_choice)(state, dispatch);
+    };
   }
 
   get active() {
diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestionService.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestionService.js
index c128ee4208a83ac385824edb7248b787730d31d0..7d926286d751ead6767ca44291297d1e971b810b 100644
--- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestionService.js
+++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceQuestionService.js
@@ -1,5 +1,6 @@
 import { Service } from 'wax-prosemirror-services';
 import MultipleChoiceQuestion from './MultipleChoiceQuestion';
+import multipleChoiceNode from './schema/multipleChoiceNode';
 
 class MultipleChoiceQuestionService extends Service {
   boot() {}
@@ -7,7 +8,10 @@ class MultipleChoiceQuestionService extends Service {
   register() {
     this.container.bind('MultipleChoiceQuestion').to(MultipleChoiceQuestion);
     const createNode = this.container.get('CreateNode');
-    console.log(createNode);
+    createNode({
+      multiple_choice: multipleChoiceNode,
+    });
+    console.log(this.schema);
   }
 }
 
diff --git a/wax-prosemirror-core/src/BlockQuote.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/TestComponent.js
similarity index 100%
rename from wax-prosemirror-core/src/BlockQuote.js
rename to editors/demo/src/HHMI/MultipleChoiceQuestionService/components/TestComponent.js
diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js
new file mode 100644
index 0000000000000000000000000000000000000000..da9539965a392d357c95670f570261b1a68f15fd
--- /dev/null
+++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/schema/multipleChoiceNode.js
@@ -0,0 +1,24 @@
+// const multipleChoiceNode = {
+//   group: 'block multiple',
+//   content: 'text*',
+//   atom: true,
+//   code: true,
+//   toDOM: () => ['multiple-choice', { class: 'multiple-choice' }, 0],
+//   parseDOM: [
+//     {
+//       tag: 'multiple-choice',
+//     },
+//   ],
+// };
+
+const multipleChoiceNode = {
+  content: 'block+',
+  group: 'block',
+  defining: true,
+  parseDOM: [{ tag: 'multiple-choice' }],
+  toDOM() {
+    return ['multiple-choice', 0];
+  },
+};
+
+export default multipleChoiceNode;
diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js
index e972699d6d16745d994cca0fe55f689ca55f7f92..d0e0640f5be2b3ee570fe83c0aab4f23c73f65a8 100644
--- a/editors/demo/src/HHMI/config/config.js
+++ b/editors/demo/src/HHMI/config/config.js
@@ -17,17 +17,8 @@ import {
   DisplayToolGroupService,
   TextBlockLevelService,
   TextToolGroupService,
-  NoteService,
-  NoteToolGroupService,
-  TrackChangeService,
-  CommentsService,
-  CodeBlockService,
-  CodeBlockToolGroupService,
   DisplayTextToolGroupService,
   MathService,
-  FindAndReplaceService,
-  EditingSuggestingService,
-  TrackingAndEditingToolGroupService,
   FullScreenService,
   FullScreenToolGroupService,
   SpecialCharactersService,
@@ -38,13 +29,13 @@ import {
   BottomInfoService,
   TransformService,
   TransformToolGroupService,
-  TrackOptionsToolGroupService,
-  TrackCommentOptionsToolGroupService,
-  CustomTagInlineToolGroupService,
-  CustomTagBlockToolGroupService,
-  CustomTagService,
 } from 'wax-prosemirror-services';
 
+/* Questions Services */
+
+import MultipleChoiceQuestionService from '../MultipleChoiceQuestionService/MultipleChoiceQuestionService';
+import QuestionsToolGroupService from '../QuestionsToolGroupService/QuestionsToolGroupService';
+
 import { DefaultSchema } from 'wax-prosemirror-utilities';
 
 import { WaxSelectionPlugin } from 'wax-prosemirror-plugins';
@@ -77,6 +68,7 @@ export default {
         'Images',
         'SpecialCharacters',
         'Tables',
+        'Questions',
         'FullScreen',
       ],
     },
@@ -93,6 +85,8 @@ export default {
   ],
 
   services: [
+    new MultipleChoiceQuestionService(),
+    new QuestionsToolGroupService(),
     new DisplayBlockLevelService(),
     new DisplayToolGroupService(),
     new TextBlockLevelService(),
diff --git a/wax-prosemirror-core/src/Wax.js b/wax-prosemirror-core/src/Wax.js
index fc15ccd02c111a129ca772927dfcd2f5a34b8f54..b344cce3c1a6f7afab68c9524758dc518961b3a7 100644
--- a/wax-prosemirror-core/src/Wax.js
+++ b/wax-prosemirror-core/src/Wax.js
@@ -66,6 +66,7 @@ const Wax = props => {
     user,
     onChange,
     targetFormat,
+    nodeViews,
   } = props;
 
   if (!application) return null;
@@ -144,6 +145,7 @@ const Wax = props => {
         targetFormat={targetFormat}
         TrackChange={TrackChange}
         user={user}
+        nodeViews={nodeViews}
       >
         {({ editor }) => <WaxRender className={className} editor={editor} />}
       </WaxView>
diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js
index 41563bdb748e2b59216ef71546062493d5e2a6cd..f12d4c69aeebf28d16640b29d7714c33115ae5da 100644
--- a/wax-prosemirror-core/src/WaxView.js
+++ b/wax-prosemirror-core/src/WaxView.js
@@ -10,7 +10,6 @@ import { trackedTransaction } from 'wax-prosemirror-services';
 import { WaxContext, useReactNodeViewPortals } from './WaxContext';
 import transformPasted from './helpers/TransformPasted';
 import { createReactNodeView } from './ReactNodeView';
-import BlockQuote from './BlockQuote';
 
 let previousDoc;
 
@@ -23,13 +22,13 @@ export default props => {
     autoFocus,
     user,
     targetFormat,
+    nodeViews,
   } = props;
 
   const editorRef = useRef();
   let view;
   const context = useContext(WaxContext);
   const { createPortal } = useReactNodeViewPortals();
-
   const handleCreatePortal = useCallback(createPortal, []);
 
   const setEditorRef = useCallback(
@@ -49,19 +48,7 @@ export default props => {
             user,
             scrollMargin: 200,
             scrollThreshold: 200,
-            nodeViews: {
-              blockquote(node, view, getPos, decorations) {
-                console.log('rerenders for ever');
-                return createReactNodeView({
-                  node,
-                  view,
-                  getPos,
-                  decorations,
-                  component: BlockQuote,
-                  onCreatePortal: handleCreatePortal,
-                });
-              },
-            },
+            nodeViews: createNodeVies(),
             handleDOMEvents: {
               blur: onBlur
                 ? view => {
@@ -97,6 +84,26 @@ export default props => {
     [readonly],
   );
 
+  const createNodeVies = () => {
+    const test = nodeViews.map((nodeView, key) => {
+      return {
+        multiple_choice(node, view, getPos, decorations) {
+          console.log('rerenders for ever');
+          return createReactNodeView({
+            node,
+            view,
+            getPos,
+            decorations,
+            component: nodeView.multiple_choice.component,
+            onCreatePortal: handleCreatePortal,
+          });
+        },
+      };
+    });
+    console.log(test);
+    return test[0];
+  };
+
   const dispatchTransaction = transaction => {
     const { TrackChange } = props;
     const tr =