diff --git a/data_entity/data_entity.module b/data_entity/data_entity.module
index 755da61..2f2cd2d 100644
--- a/data_entity/data_entity.module
+++ b/data_entity/data_entity.module
@@ -184,7 +184,7 @@ function data_entity_permission() {
 
   foreach ($tables as $table_name => $table) {
     $permissions['edit data in table ' . $table_name] = array(
-      'title' => t('Edit data in the %table_name table', array('%table_name' => $table->title)), 
+      'title' => t('Edit data in the %table_name table', array('%table_name' => $table->title)),
     );
   }
 
@@ -223,3 +223,26 @@ function data_entity_views_api() {
   );
 }
 
+/**
+ * Implements hook_entity_property_info().
+ *
+ * Allow modules to define metadata about entity properties.
+ */
+
+function data_entity_entity_property_info() {
+  $tables = data_entity_get_entity_tables();
+  $info = array();
+  foreach ($tables as $table) {
+    foreach ($table->table_schema['fields'] as $field_name => $field) {
+      $info['data_' . $table->name]['properties'][$field_name] = array(
+        'label' => !empty($table->meta['fields'][$field_name]['label']) ? $table->meta['fields'][$field_name]['label'] : $field_name,
+        'description' => 'Field of type ' . $field['type'] . '.',
+        'getter callback' => 'entity_property_verbatim_get',
+        'setter callback' => 'entity_property_verbatim_set',
+        'schema field' => $field_name,
+        'field' => TRUE,
+      );
+    }
+  }
+  return $info;
+}
