diff --git a/dev/js/spec/containerMenuSpec.js b/dev/js/spec/containerMenuSpec.js
index a3283a3..36d12fe 100644
--- a/dev/js/spec/containerMenuSpec.js
+++ b/dev/js/spec/containerMenuSpec.js
@@ -1,7 +1,56 @@
 define(
   ['containermenu', 'menu/item', 'menu/prefix', 'menu/lengthField','container/containeritem','container/container'],
   function (containerMenuClass, menuItemClass, prefixClass, lengthFieldClass, containerItemClass, containerClass) {
-
+    function emitKeyboardEvent (element, type, letter, keyCode) {
+      // ORIGINAL FROM hintSpec.js !!!
+      // event type : keydown, keyup, keypress
+      // http://stackoverflow.com/questions/596481/simulate-javascript-key-events
+      // http://stackoverflow.com/questions/961532/firing-a-keyboard-event-in-javascript
+      /**
+       * Nils Version. Does not work due to bug noted below
+      var keyboardEvent = document.createEvent("KeyboardEvent",);
+      var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ?
+          "initKeyboardEvent" : "initKeyEvent";
+      keyboardEvent[initMethod](
+       
+        
+       
+        type, 
+        true,    // bubbles
+        true,    // cancelable
+        window,  // viewArg: should be window
+        false,   // ctrlKeyArg
+        false,   // altKeyArg
+        false,   // shiftKeyArg
+        false,   // metaKeyArg
+        keyCode, // keyCodeArg : unsigned long the virtual key code, else 0
+        charCode || 0        // charCodeArgs : unsigned long the Unicode character
+        // associated with the depressed key, else 0
+        
+      );
+      element.dispatchEvent(keyboardEvent);
+      */
+      //Leos Version
+      //https://stackoverflow.com/a/59113178
+            
+        //might not work on Chromium
+      element.dispatchEvent(new KeyboardEvent(type, {
+        key: letter,
+        keyCode: keyCode,
+        code: "Key"+letter,
+        which: keyCode, //This is a hack
+        shiftKey: false,
+        ctrlKey: false,
+        metaKey: false,
+        bubbles: true,
+        view: window,
+        charCode: keyCode //This is a hack https://bugs.webkit.org/show_bug.cgi?id=16735
+        // charCodeArgs : unsigned long the Unicode character
+      // associated with the depressed key, else 0
+      }));
+      // ORIGINAL FROM hintSpec.js !!!
+    };
+  
     // The OwnMenu item
     const OwnMenuItem = {
       create : function (params) {
@@ -2045,10 +2094,10 @@
       xit('should scroll to a chosen value after prefixing, if the chosen value is live');
       
       it('should be extendable', function () {
-          var menu = OwnContainerMenu.create([],ExampleItemList);
-          let entryData = 'empty';
-          menu._itemClass = menuItemClass;
-          menu.readItems([
+        var menu = OwnContainerMenu.create([],ExampleItemList);
+        let entryData = 'empty';
+        menu._itemClass = menuItemClass;
+        menu.readItems([
           ['a', '', function () { entryData = 'a' }],
           ['bb', '', function () { entryData = 'bb' }],
           ['ccc', '', function () { entryData = 'ccc' }],
@@ -2150,6 +2199,26 @@
         expect(menu.container().item()).toEqual(menu.container()._cItemPrefix);
         expect(menu.container()._prefixPosition).toEqual(menu.container().items.indexOf(menu.container()._cItemPrefix));
       });
+      
+      it('should highlight the prefix if no item matches.', function () {
+        var menu = OwnContainerMenu.create(demolist,ExampleItemList);
+        expect(menu.limit(3).show(3)).toBe(true);
+        menu.element().focus();
+
+        emitKeyboardEvent(menu.element(), 'keypress', "E", 69);
+        emitKeyboardEvent(menu.element(), 'keypress', "E", 69);
+        emitKeyboardEvent(menu.element(), 'keypress', "E", 69);
+        expect(menu.container()._cItemPrefix.active()).toBeTruthy();
+        expect(menu.prefix()).toEqual("EEE");
+        expect(menu.element().classList.contains("visible")).toBeTruthy();
+        expect(menu.container().element().classList.contains("visible")).toBeTruthy();   
+        emitKeyboardEvent(menu.element(),'keydown'," ",13);
+        //Should call reset() and hide()
+        // hint containermenu should do something different.
+        expect(menu.prefix()).toEqual("EEE");
+        expect(menu.element().classList.contains("visible")).toBeTruthy();
+        expect(menu.container().element().classList.contains("visible")).toBeTruthy();
+      });
     });
 
     describe('KorAP.ContainerMenu.Container', function () {
diff --git a/dev/js/spec/hintSpec.js b/dev/js/spec/hintSpec.js
index e81033d..5c7a1c7 100644
--- a/dev/js/spec/hintSpec.js
+++ b/dev/js/spec/hintSpec.js
@@ -2,14 +2,19 @@
 
 define(['hint', 'hint/input', 'hint/contextanalyzer', 'hint/menu', 'hint/item'], function (hintClass, inputClass, contextClass, menuClass, menuItemClass) {
 
-  function emitKeyboardEvent (element, type, keyCode) {
+  function emitKeyboardEvent (element, type, letter, keyCode) {
     // event type : keydown, keyup, keypress
     // http://stackoverflow.com/questions/596481/simulate-javascript-key-events
     // http://stackoverflow.com/questions/961532/firing-a-keyboard-event-in-javascript
-    var keyboardEvent = document.createEvent("KeyboardEvent");
+    /**
+     * Nils Version. Does not work due to bug noted below
+    var keyboardEvent = document.createEvent("KeyboardEvent",);
     var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ?
         "initKeyboardEvent" : "initKeyEvent";
     keyboardEvent[initMethod](
+     
+      
+     
       type, 
       true,    // bubbles
       true,    // cancelable
@@ -19,10 +24,30 @@
       false,   // shiftKeyArg
       false,   // metaKeyArg
       keyCode, // keyCodeArg : unsigned long the virtual key code, else 0
-      0        // charCodeArgs : unsigned long the Unicode character
+      charCode || 0        // charCodeArgs : unsigned long the Unicode character
       // associated with the depressed key, else 0
+      
     );
     element.dispatchEvent(keyboardEvent);
+    */
+    //Leos Version
+    //https://stackoverflow.com/a/59113178
+          
+      //might not work on Chromium
+    element.dispatchEvent(new KeyboardEvent(type, {
+      key: letter,
+      keyCode: keyCode,
+      code: "Key"+letter,
+      which: keyCode, //This is a hack
+      shiftKey: false,
+      ctrlKey: false,
+      metaKey: false,
+      bubbles: true,
+      view: window,
+      charCode: keyCode //This is a hack https://bugs.webkit.org/show_bug.cgi?id=16735
+      // charCodeArgs : unsigned long the Unicode character
+    // associated with the depressed key, else 0
+    }));
   };
 
   var afterAllFunc = function () {
@@ -125,13 +150,13 @@
       expect(inputField.context()).toEqual("abcde");
     });
 
-    /*
+    
       it('should be correctly triggerable', function () {
       // https://developer.mozilla.org/samples/domref/dispatchEvent.html
       var hint = KorAP.Hint.create({ "inputField" : input });
-      emitKeyboardEvent(hint.inputField.element, "keypress", 20);
+      emitKeyboardEvent(hint.inputField()._el, "keypress", "E", 69);
       });
-    */
+    
   });
 
 
@@ -438,6 +463,41 @@
       
     });
 
+    
+    it('should highlight the prefix if no item matches.', function () {
+      const hint = hintClass.create({
+        inputField : input
+      });
+      hint.inputField().reset();
+
+      expect(hint.active()).toBeFalsy();
+
+      // show with context
+      hint.show(false);
+
+      expect(hint.active()).toBeTruthy();
+
+      const menu = hint.active();
+      expect(menu.limit(3).show(3)).toBe(true);
+      menu.element().focus();
+          
+      
+
+      emitKeyboardEvent(menu.element(), 'keypress', "E", 69);
+      emitKeyboardEvent(menu.element(), 'keypress', "E", 69);
+      emitKeyboardEvent(menu.element(), 'keypress', "E", 69);
+      expect(menu.container()._cItemPrefix.active()).toBeTruthy();
+      expect(menu.prefix()).toEqual("EEE");
+      expect(menu.element().classList.contains("visible")).toBeTruthy();
+      expect(menu.container().element().classList.contains("visible")).toBeTruthy();
+
+      emitKeyboardEvent(menu.element(),'keydown'," ",13);
+      //Should call reset() and hide()
+      // hint containermenu should do something different.
+      expect(menu.prefix()).toEqual("");
+      expect(menu.element().classList.contains("visible")).toBeFalsy();
+      expect(menu.container().element().classList.contains("visible")).toBeFalsy();
+    });
 
     
     xit('should remove all menus on escape');
diff --git a/dev/js/src/containermenu.js b/dev/js/src/containermenu.js
index 83e3dc6..5d3f5f3 100644
--- a/dev/js/src/containermenu.js
+++ b/dev/js/src/containermenu.js
@@ -130,9 +130,9 @@
           t.container().enter(e);
           //NEW: reset some things. These are reset for hint menu style items
           // so I believe we need to do the same when pressing on items in the container
-          t.reset("");
-          t.hide();
-          t.hint().unshow();
+          //t.reset("");
+          //t.hide();
+          //t.hint().unshow(); Moved this line into hint/menu.js because it is hint containermenu specific!
           //for clicking this is done in container.js with an eventListener for click.
         } else { // Click on item
           t.liveItem(t.position).onclick(e);
diff --git a/dev/js/src/hint/menu.js b/dev/js/src/hint/menu.js
index ecd0b51..ebbdd68 100644
--- a/dev/js/src/hint/menu.js
+++ b/dev/js/src/hint/menu.js
@@ -51,7 +51,7 @@
       obj.container().element().addEventListener("click", function (e) {
         this.reset("");
         this.element().blur();
-        this.hint().unshow(); //hide the containermenu, not with hide but with blur, because blur would usually happen in default mousedown behaviour
+        //NOW IN RESET: this.hint().unshow(); //hide the containermenu, not with hide but with blur, because blur would usually happen in default mousedown behaviour
         e.halt(); // Question: my impression is that this click event handler is called after all the others and thus this should be absolutely no problem.
         // Are we sure there are no things that do not happen now thanks to this?
 
@@ -87,6 +87,7 @@
      reset : function (action) {
       this.prefix("");
       this.hint().inputField().insert(action).update();
+      this.hint().unshow()
     },
   };
 });
