New subscriber view
diff --git a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/field/field.component.js b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/field/field.component.js
index 923def6..c2aa62d 100644
--- a/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/field/field.component.js
+++ b/views/ngXosLib/xosHelpers/src/ui_components/dumbComponents/field/field.component.js
@@ -27,7 +27,7 @@
     * ```
     * @param {mixed} ngModel The field value
     */
-  .directive('xosField', function(){
+  .directive('xosField', function(RecursionHelper){
     return {
       restrict: 'E',
       scope: {
@@ -36,7 +36,7 @@
         ngModel: '='
       },
       template: `
-        <label>{{vm.field.label}}</label>
+        <label ng-if="vm.field.type !== 'object'">{{vm.field.label}}</label>
             <input
               ng-if="vm.field.type !== 'boolean' && vm.field.type !== 'object'"
               type="{{vm.field.type}}"
@@ -62,27 +62,41 @@
             </span>
             <div
               class="panel panel-default object-field"
-              ng-if="vm.field.type == 'object' "
+              ng-if="vm.field.type == 'object' && !vm.isEmptyObject(vm.ngModel)"
               >
-              <div class="panel-heading">Panel heading without title</div>
+              <div class="panel-heading">{{vm.field.label}}</div>
               <div class="panel-body">
-                Panel content
+                <div ng-repeat="(k, v) in vm.ngModel">
+                  <xos-field
+                    name="k"
+                    field="{label: k, type: vm.getType(v)}"
+                    ng-model="v">
+                  </xos-field>
+                </div>
               </div>
             </div>
       `,
       bindToController: true,
       controllerAs: 'vm',
-      controller: function(){
-        // console.log('Field: ', this.name, this.field.type, this.ngModel);
+      // the compile cicle is needed to support recursion
+      compile: function (element) {
+        return RecursionHelper.compile(element);
+      },
+      controller: function(XosFormHelpers){
+        // console.log('Field: ', this.name, this.field, this.ngModel);
         if(!this.name){
           throw new Error('[xosField] Please provide a field name');
         }
         if(!this.field){
           throw new Error('[xosField] Please provide a field definition');
         }
-        if(!this.ngModel){
+        if(!angular.isDefined(this.ngModel)){
           throw new Error('[xosField] Please provide an ng-model');
         }
+
+        this.getType = XosFormHelpers._getFieldFormat;
+
+        this.isEmptyObject = o => Object.keys(o).length === 0;
       }
     }
   });