diff --git a/client/bundle.js b/client/bundle.js
index 6f882f0addea87d74d6a03e8b956b7308fcf158c..dab65b1c636fc81aa85402cabbf0d094bdb46ccd 100644
--- a/client/bundle.js
+++ b/client/bundle.js
@@ -7638,6 +7638,7 @@
 	let MaterialList = __webpack_require__(35);
 	//let PropertiesBox = require('./PropertiesBox.view.js');
 	let FilterPanel = __webpack_require__(36);
+	let SwitchComponent = __webpack_require__(13);
 
 
 
@@ -7695,8 +7696,7 @@
 	            <button class="name-add-btn" >Name</button>
 	          </div>
 	          <div class="bool-buttons" style="width: 28%; display: inline-block" >
-	            <button  disabled >AND</button>
-	            <button  disabled >OR</button>
+	            OR <span id="and-or-switch" ></span> AND
 	            <button  disabled >NOT</button>
 	            <button  disabled >(</button> <button  disabled >)</button>
 	            <!--<input type="checkbox" name="and-or" class="not-symbol-btn" />NOT-->
@@ -7734,6 +7734,9 @@
 
 	    this.addPanel= this.element.querySelector('.add-panel');
 
+	    let andOrSwitch = new SwitchComponent(util.IMAGE_DIR+'switch');
+	    this.element.querySelector('#and-or-switch').appendChild(andOrSwitch.element);
+
 	    this.elementTable= new ElementTable();
 	    this.elementTable.setClickListener(elementArray => {
 	      this.addElementsInSearchQuery(elementArray);
@@ -7817,8 +7820,7 @@
 	            //else
 	            let esMatchQuery;
 	            if (this.formulaBox.getMultiplesOfFormula()){
-	              esMatchQuery = this._getESSimpleMatch('formula_reduced', item);
-	              this._reduceFormula(item);
+	              esMatchQuery = this._getESSimpleMatch('formula_reduced', this._reduceFormula(item));
 	            }else
 	              esMatchQuery = this._getESSimpleMatch('formula', item);
 	            queryObj.bool.filter.push(esMatchQuery);
@@ -7986,7 +7988,7 @@
 	    let map = new Map();
 	    let key;
 	    while ( index < formula.length ){
-	      console.log('_reduceFormula index', index);
+	      //console.log('_reduceFormula index', index);
 	      let el2 = formula.substring(index, index+2);
 	      let el1 = formula.substring(index, index+1);
 
@@ -7994,30 +7996,24 @@
 	        map.set(el2, 1); // 1 default value
 	        index += 2;
 	        key = el2;
-	        console.log('eleemnt 2chars', key);
+	        //console.log('eleemnt 2chars', key);
 	      }else if (util.ELEMENTS.indexOf(el1) >= 0){
 	        map.set(el1, 1); // 1 default value
 	        index++;
 	        key = el1;
-	        console.log('eleemnt 1chars', key);
+	        //console.log('eleemnt 1chars', key);
 	      }else{ // It's a number
-	        // ************ parseInt(el2)
 	        let num = parseInt(el2);
-	        //console.log('parsed number ', el2, num);
-	        if (num >= 10){ // 2 figures number
-	          index += 2;
-	        }else{ // 1 figure number
-	          index++;
-	        }
-	        console.log('number ', num, key);
+	        if (num >= 10) index += 2; // 2 figures number
+	        else index++;// 1 figure number
+	        //console.log('number ', num, key);
 	        map.set(key, num);
 	      }
-	      console.log('FINAL LOOP', map, index);
+	      // console.log('FINAL LOOP', map, index);
 	    }
 
 	    let counter = 0;
-	    while ( !checkIfReduced(map) ){
-	      console.log('Reducing', map);
+	    while ( !checkIfReduced(map) ){ // console.log('Reducing', map);
 	      let div = 1;
 	      if (isDivisibleBy(map, 2)) div = 2;
 	      else if (isDivisibleBy(map, 3)) div = 3;
@@ -8026,11 +8022,9 @@
 	      else if (isDivisibleBy(map, 11)) div = 11;
 
 	      map.forEach( (value, key) => {
-	        value = value/div;
 	        map.set(key, (value/div));
 	      });
-	      console.log('Reducing DIV', map);
-
+	      //console.log('Reducing DIV', map);
 	      counter++;
 	      if (counter > 5) break;
 	    }
@@ -8050,8 +8044,13 @@
 	      });
 	      return div;
 	    }
-	    //console.log('_reduceFormula', map);
-	    return formula;
+
+	    let newFormula = '';
+	    map.forEach( (value, key) => {
+	      newFormula += key+(value === 1 ? '' : value);
+	    });
+	    console.log('_reduceFormula RETURN: ', map, newFormula);
+	    return newFormula;
 	  }
 
 
@@ -9120,6 +9119,16 @@
 	      } `;
 	*/
 
+	postQuery= `
+	  {
+	      "bool" : {
+	          "should" : [
+	                 {"match":{"formula":"H4O2"}},
+	                 {"match":{"atom_labels":"Sc"}}
+	          ]
+	      }
+	  } `;
+
 
 
 	    console.log('SENDING: ', postQuery);
diff --git a/client/src/search-mod/MaterialList.view.js b/client/src/search-mod/MaterialList.view.js
index 633b9862f71998a3e846893dbb3fe52a61d0c57b..949aa6dc195be491acdb958a206b40fc6caed227 100644
--- a/client/src/search-mod/MaterialList.view.js
+++ b/client/src/search-mod/MaterialList.view.js
@@ -140,6 +140,16 @@ class MaterialList {
       } `;
 */
 
+postQuery= `
+  {
+      "bool" : {
+          "should" : [
+                 {"match":{"formula":"H4O2"}},
+                 {"match":{"atom_labels":"Sc"}}
+          ]
+      }
+  } `;
+
 
 
     console.log('SENDING: ', postQuery);
diff --git a/client/src/search-mod/NewSearchMod.js b/client/src/search-mod/NewSearchMod.js
index 6546100450d4bb584e72b9a1794ea3e5adc45afc..fdff05bac737761d04455a781c3d0bc898672997 100644
--- a/client/src/search-mod/NewSearchMod.js
+++ b/client/src/search-mod/NewSearchMod.js
@@ -31,6 +31,7 @@ let ElementTable = require('./ElemenTable.view.js');
 let MaterialList = require('./MaterialList.view.js');
 //let PropertiesBox = require('./PropertiesBox.view.js');
 let FilterPanel = require('./FilterPanel.view.js');
+let SwitchComponent = require('../common/SwitchComponent.js');
 
 
 
@@ -88,8 +89,7 @@ class NewSearchMod {
             <button class="name-add-btn" >Name</button>
           </div>
           <div class="bool-buttons" style="width: 28%; display: inline-block" >
-            <button  disabled >AND</button>
-            <button  disabled >OR</button>
+            OR <span id="and-or-switch" ></span> AND
             <button  disabled >NOT</button>
             <button  disabled >(</button> <button  disabled >)</button>
             <!--<input type="checkbox" name="and-or" class="not-symbol-btn" />NOT-->
@@ -127,6 +127,9 @@ class NewSearchMod {
 
     this.addPanel= this.element.querySelector('.add-panel');
 
+    let andOrSwitch = new SwitchComponent(util.IMAGE_DIR+'switch');
+    this.element.querySelector('#and-or-switch').appendChild(andOrSwitch.element);
+
     this.elementTable= new ElementTable();
     this.elementTable.setClickListener(elementArray => {
       this.addElementsInSearchQuery(elementArray);
@@ -210,8 +213,7 @@ class NewSearchMod {
             //else
             let esMatchQuery;
             if (this.formulaBox.getMultiplesOfFormula()){
-              esMatchQuery = this._getESSimpleMatch('formula_reduced', item);
-              this._reduceFormula(item);
+              esMatchQuery = this._getESSimpleMatch('formula_reduced', this._reduceFormula(item));
             }else
               esMatchQuery = this._getESSimpleMatch('formula', item);
             queryObj.bool.filter.push(esMatchQuery);
@@ -379,7 +381,7 @@ class NewSearchMod {
     let map = new Map();
     let key;
     while ( index < formula.length ){
-      console.log('_reduceFormula index', index);
+      //console.log('_reduceFormula index', index);
       let el2 = formula.substring(index, index+2);
       let el1 = formula.substring(index, index+1);
 
@@ -387,30 +389,24 @@ class NewSearchMod {
         map.set(el2, 1); // 1 default value
         index += 2;
         key = el2;
-        console.log('eleemnt 2chars', key);
+        //console.log('eleemnt 2chars', key);
       }else if (util.ELEMENTS.indexOf(el1) >= 0){
         map.set(el1, 1); // 1 default value
         index++;
         key = el1;
-        console.log('eleemnt 1chars', key);
+        //console.log('eleemnt 1chars', key);
       }else{ // It's a number
-        // ************ parseInt(el2)
         let num = parseInt(el2);
-        //console.log('parsed number ', el2, num);
-        if (num >= 10){ // 2 figures number
-          index += 2;
-        }else{ // 1 figure number
-          index++;
-        }
-        console.log('number ', num, key);
+        if (num >= 10) index += 2; // 2 figures number
+        else index++;// 1 figure number
+        //console.log('number ', num, key);
         map.set(key, num);
       }
-      console.log('FINAL LOOP', map, index);
+      // console.log('FINAL LOOP', map, index);
     }
 
     let counter = 0;
-    while ( !checkIfReduced(map) ){
-      console.log('Reducing', map);
+    while ( !checkIfReduced(map) ){ // console.log('Reducing', map);
       let div = 1;
       if (isDivisibleBy(map, 2)) div = 2;
       else if (isDivisibleBy(map, 3)) div = 3;
@@ -419,11 +415,9 @@ class NewSearchMod {
       else if (isDivisibleBy(map, 11)) div = 11;
 
       map.forEach( (value, key) => {
-        value = value/div;
         map.set(key, (value/div));
       });
-      console.log('Reducing DIV', map);
-
+      //console.log('Reducing DIV', map);
       counter++;
       if (counter > 5) break;
     }
@@ -443,8 +437,13 @@ class NewSearchMod {
       });
       return div;
     }
-    //console.log('_reduceFormula', map);
-    return formula;
+
+    let newFormula = '';
+    map.forEach( (value, key) => {
+      newFormula += key+(value === 1 ? '' : value);
+    });
+    console.log('_reduceFormula RETURN: ', map, newFormula);
+    return newFormula;
   }