diff --git a/views/ngXosLib/xosHelpers/spec/ui/form.test.js b/views/ngXosLib/xosHelpers/spec/ui/form.test.js
index 4cd3fec..4b33a5a 100644
--- a/views/ngXosLib/xosHelpers/spec/ui/form.test.js
+++ b/views/ngXosLib/xosHelpers/spec/ui/form.test.js
@@ -82,14 +82,14 @@
       }));
 
       describe('the _getFieldFormat method', () => {
-        xit('should return string', () => {
+        it('should return string', () => {
           expect(service._getFieldFormat('string')).toEqual('string');
         });
         it('should return number', () => {
           expect(service._getFieldFormat(1)).toEqual('number');
           expect(service._getFieldFormat('1')).toEqual('number');
         });
-        xit('should return boolean', () => {
+        it('should return boolean', () => {
           expect(service._getFieldFormat(false)).toEqual('boolean');
           expect(service._getFieldFormat(true)).toEqual('boolean');
         });
@@ -101,16 +101,16 @@
         });
       });
 
-      xit('should convert the fields array in an empty form object', () => {
+      it('should convert the fields array in an empty form object', () => {
         expect(service.parseModelField(fields)).toEqual(modelField);
       });
 
-      xit('should combine modelField and customField in a form object', () => {
+      it('should combine modelField and customField in a form object', () => {
         expect(service.buildFormStructure(modelField, customField, model)).toEqual(formObject);
       });
     });
 
-    xdescribe('The xos-form component', () => {
+    describe('The xos-form component', () => {
 
       let element, scope, isolatedScope;
 
@@ -153,13 +153,11 @@
                 class: 'success'
               }
             ],
-            fields: [
-              {
-                first_name: {
-                  label: 'Custom Label'
-                }
+            fields: {
+              first_name: {
+                label: 'Custom Label'
               }
-            ]
+            }
           };
 
           scope.model = {
@@ -190,7 +188,7 @@
         });
 
         it('should render 8 field', () => {
-          expect(isolatedScope.formField.length).toEqual(8);
+          expect(Object.keys(isolatedScope.formField).length).toEqual(8);
           var field = element[0].getElementsByTagName('input');
           expect(field.length).toEqual(8);
         });
diff --git a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js
index f33c639..cd5e1ca 100644
--- a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js
+++ b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/form.component.js
@@ -63,7 +63,7 @@
       template: `
         <ng-form name="vm.config.formName || 'form'">
           <div class="form-group" ng-repeat="field in vm.formField">
-            <label>{{vm.formatLabel(field.label)}}</label>
+            <label>{{field.label}}</label>
             <input type="text" name="" class="form-control" ng-model="vm.ngModel[field]"/>
           </div>
           <div class="form-group" ng-if="vm.config.actions">
@@ -80,7 +80,7 @@
       `,
       bindToController: true,
       controllerAs: 'vm',
-      controller: function($scope, $log, _, LabelFormatter, XosFormHelpers){
+      controller: function($scope, $log, _, XosFormHelpers){
 
         if(!this.config){
           throw new Error('[xosForm] Please provide a configuration via the "config" attribute');
@@ -90,8 +90,6 @@
           throw new Error('[xosForm] Please provide an action list in the configuration');
         }
 
-        this.formatLabel = LabelFormatter.format;
-
         this.excludedField = ['id', 'validators', 'created', 'updated', 'deleted', 'backend_status'];
         if(this.config && this.config.exclude){
           this.excludedField = this.excludedField.concat(this.config.exclude);
@@ -103,7 +101,7 @@
           if(!model){
             return;
           }
-          this.formField = XosFormHelpers.buildFormStructure(_.difference(Object.keys(model), this.excludedField));
+          this.formField = XosFormHelpers.buildFormStructure(XosFormHelpers.parseModelField(_.difference(Object.keys(model), this.excludedField)), this.config.fields, model);
         });
 
       }
@@ -114,7 +112,7 @@
     this._getFieldFormat = (value) => {
 
       // check if is date
-      if (_.isDate(value)){
+      if (_.isDate(value) || (!Number.isNaN(Date.parse(value)) && Date.parse(value) > 0)){
         return 'date';
       }
 
