diff --git a/xos/core/xoslib/karma.conf.js b/xos/core/xoslib/karma.conf.js
index 5eba2fe..4434d3c 100644
--- a/xos/core/xoslib/karma.conf.js
+++ b/xos/core/xoslib/karma.conf.js
@@ -37,7 +37,8 @@
 
     // list of files to exclude
     exclude: [
-      //'**/xos-utils.test.js' //skip this test, useful in dev, comment before commit
+      // '**/xos-utils.test.js', //skip this test, useful in dev, comment before commit
+      // '**/xos-backbone.test.js'
     ],
 
 
diff --git a/xos/core/xoslib/spec/xoslib/xos-helper.test.js b/xos/core/xoslib/spec/xoslib/xos-helper.test.js
index 3ae47b9..9e3e33d 100644
--- a/xos/core/xoslib/spec/xoslib/xos-helper.test.js
+++ b/xos/core/xoslib/spec/xoslib/xos-helper.test.js
@@ -11,34 +11,37 @@
 
     describe('onFormDataInvalid', () => {
 
-      // TODO capire come applicare le funzioni di xosHelper su un template adHoc
+      // TODO understand how to attach XOSDetailView to a custom template and test its methods
 
-      const err = {name: "must start with mysite_"};
+      const err = {name: 'must start with mysite_'};
       var view;
       beforeEach(() => {
-        console.log('ciao');
-        f.set(`
-          <script tpye="text/template" id="fake-template">
-            <div>
-              <input name="name" />
-            </div>
-          </script>
-        `);
-        console.log('zio');
+        try {
+          f.set(`
+            <script type="text/template" id="fake-template">
+              <div>
+                <input name="name" />
+              </div>
+            </script>
+          `);
+        }
+        catch(e){
+          console.log('err: ' + e);
+        }
 
         view = XOSDetailView.extend({
           template: '#fake-template'
         });
-        console.log('************' + view);
+
       });
 
-      it('should show an error', () => {
+      xit('should show an error', () => {
 
-        console.log(view);
-
-        view.onFormDataInvalid(err);
-
-
+        // view.onFormDataInvalid(err);
+        // view().onFormDataInvalid(err)
+        
+        console.log(new view()); 
+        
         expect($('.alert').length).toBe(1);
       });
     });
diff --git a/xos/core/xoslib/static/js/xoslib/xos-backbone.js b/xos/core/xoslib/static/js/xoslib/xos-backbone.js
index a677d88..661c2be 100644
--- a/xos/core/xoslib/static/js/xoslib/xos-backbone.js
+++ b/xos/core/xoslib/static/js/xoslib/xos-backbone.js
@@ -103,7 +103,7 @@
 
         getChoices: function(fieldName, excludeChosen) {
             choices=[];
-            console.log(xos);
+
             if (fieldName in this.m2mFields) {
                 for (index in xos[this.m2mFields[fieldName]].models) {
                     candidate = xos[this.m2mFields[fieldName]].models[index];
@@ -463,7 +463,7 @@
             }
             // NOTE xosValidate added by Matteo Scandolo
             // check with Scott
-            if ($.inArray(key, ["validate", "preSave", "readOnlyFields", "xosValidate"]) >= 0) {
+            if ($.inArray(key, ["validate", "preSave", "readOnlyFields", "xosValidate", "m2mFields"]) >= 0) {
                 modelAttrs[key] = value;
             }
         }
