diff --git a/src/component/entity-form.js b/src/component/entity-form.js
index <HASH>..<HASH> 100644
--- a/src/component/entity-form.js
+++ b/src/component/entity-form.js
@@ -1,5 +1,6 @@
-import {customElement, bindable} from 'aurelia-framework';
+import {customElement, bindable, computedFrom} from 'aurelia-framework';
 import {resolvedView} from 'aurelia-view-manager';
+import {Metadata} from '../Metadata';
 
 @resolvedView('spoonx/form', 'entity-form')
 @customElement('entity-form')
@@ -11,18 +12,21 @@ export class EntityForm {
 
   @bindable skip = [];
 
-  attached() {
-    let types = this.entity.getMeta().metadata.types;
+  @computedFrom('entity')
+  get elements() {
+    let types  = this.entity.getMeta().metadata.types;
+    let fields = Metadata.forTarget(this.entity).fetch('fields');
 
-    this.elements = Object.keys(types).map(field => {
+    return Object.keys(types).map(field => {
       return {
         element: types[field],
-        field  : field
+        field  : field,
+        meta   : fields[field]
       }
     });
   }
 
-  isVisible (fieldName) {
+  isVisible(fieldName) {
     return this.skip.indexOf(fieldName) === -1;
   }
 }
refactor(entity-form): use metadata in form generation