diff --git a/Dockerfile.xos-gui-builder b/Dockerfile.xos-gui-builder
index 93d4fa5..32508ca 100644
--- a/Dockerfile.xos-gui-builder
+++ b/Dockerfile.xos-gui-builder
@@ -31,7 +31,7 @@
  && npm run typings
 
 ARG org_label_schema_schema_version=1.0
-ARG org_label_schema_name=xos-gui-extension-builder
+ARG org_label_schema_name=xos-gui-builder
 ARG org_label_schema_version=unknown
 ARG org_label_schema_vcs_url=unknown
 ARG org_label_schema_vcs_ref=unknown
diff --git a/src/app/core/services/helpers/config.helpers.spec.ts b/src/app/core/services/helpers/config.helpers.spec.ts
index 7120a6b..f36c20a 100644
--- a/src/app/core/services/helpers/config.helpers.spec.ts
+++ b/src/app/core/services/helpers/config.helpers.spec.ts
@@ -344,6 +344,48 @@
         ]);
       });
     });
+
+    describe('the removeExtraFields method', () => {
+      beforeEach(() => {
+        service = new ConfigHelpers(q, stateMock, toastr, modelStoreMock, XosFormHelpersMock);
+      });
+
+      it('should remove properties not defined in xProto', () => {
+        const model: IXosModeldef = {
+          name: 'Test',
+          app: 'test',
+          fields: [
+            {
+              type: 'number',
+              name: 'foo',
+              validators: []
+            },
+            {
+              type: 'string',
+              name: 'bar',
+              validators: [
+                {
+                  bool_value: true,
+                  name: 'required'
+                }
+              ]
+            }
+          ],
+          description: '',
+          verbose_name: ''
+        };
+
+        const item: any = {
+          foo: 1,
+          bar: 'existing',
+          baz: 'remove me'
+        };
+
+        const res = service['removeExtraFields'](item, model);
+
+        expect(res).not.toHaveProp('baz');
+      });
+    });
   });
 });
 
diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index 4750ac1..80855e5 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -316,25 +316,17 @@
 
         return;
       }
+      // remove fields added by the GUI
+      item = this.removeExtraFields(item, model);
 
-      const itemCopy = angular.copy(item);
-
-      // TODO remove ManyToMany relations and save them separately (how??)
-      delete item.networks;
-
-      // remove field added by xosTable
       _.forEach(Object.keys(item), prop => {
-        // FIXME what _ptr fields comes from??
-        if (prop.indexOf('-formatted') > -1 || prop.indexOf('_ptr') > -1) {
-          delete item[prop];
-        }
-
         // convert dates back to UnixTime
         if (this.XosFormHelpers._getFieldFormat(item[prop]) === 'date') {
           item[prop] = new Date(item[prop]).getTime() / 1000;
         }
       });
 
+      const itemCopy = angular.copy(item);
       const itemName = (angular.isUndefined(itemCopy.name)) ? model.name : itemCopy.name;
 
       item.$save()
@@ -365,6 +357,16 @@
     return formCfg;
   }
 
+  private removeExtraFields(item: any, modelDef: IXosModeldef) {
+    _.forEach(Object.keys(item), prop => {
+      const hasField = _.findIndex(modelDef.fields, {name: prop}) > -1;
+      if (!hasField) {
+        delete item[prop];
+      }
+    });
+    return item;
+  }
+
   private formatDefaultValues(val: any): any {
 
     if (angular.isString(val)) {
