diff --git a/eck.entity.inc b/eck.entity.inc
index 1be3dbe..5bc8747 100644
--- a/eck.entity.inc
+++ b/eck.entity.inc
@@ -540,6 +540,16 @@ function eck__entity__view($entity_type_name, $bundle_name, $entity) {
   return $build;
 }
 
+function eck__entity__load($entities) {
+  // To proceed with invoking a plugin we need to know entityType.
+  // Stop at first entity (supposing $entities contain entities of the same type)
+  foreach ($entities as $id => $entity) {
+    $entity_type = entity_type_load($entity->entityType());
+    break;
+  }
+  eck_property_behavior_invoke_plugin($entity_type, 'entity_load', array('entities' => $entities));
+}
+
 function _eck_form_property_value($state, $property){
   if(array_key_exists($property, $state['values'])){
     return $state['values'][$property];
diff --git a/eck.entity_type.inc b/eck.entity_type.inc
index f942b82..8c6892a 100644
--- a/eck.entity_type.inc
+++ b/eck.entity_type.inc
@@ -412,6 +412,8 @@ function eck__entity_type__info($entity_type) {
     'bundle keys' => array(
       'bundle' => 'type'
     ),
+    // We will use our own hook as proxy
+    'load hook' => '_entity__load',
     // I guess we need at least one view mode for entity_view_modes (the module) to work.
     'view modes' => array(
       'teaser' => array(
diff --git a/modules/eck_ds.ds_fields_info.inc b/modules/eck_ds.ds_fields_info.inc
new file mode 100644
index 0000000..8ea991b
--- /dev/null
+++ b/modules/eck_ds.ds_fields_info.inc
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * ECK Display Suite fields.
+ */
+
+/**
+ * Implements hook_ds_fields_info().
+ */
+function eck_ds_ds_fields_info($entity_type_name) {
+
+  $entity_type = entity_type_load($entity_type_name);
+  if (isset($entity_type->id)) {
+    $data = eck_property_behavior_invoke_plugin_alter($entity_type, 'ds_fields_info', array('entity_type' => $entity_type, 'fields' => array()));
+    $fields[$entity_type_name] = $data['fields'];
+  }
+
+  if (isset($fields[$entity_type_name])) {
+    return array($entity_type_name => $fields[$entity_type_name]);
+  }
+  return;
+
+}
diff --git a/modules/eck_ds.info b/modules/eck_ds.info
new file mode 100644
index 0000000..9521280
--- /dev/null
+++ b/modules/eck_ds.info
@@ -0,0 +1,9 @@
+name = ECK Dispay Suite
+description = Entity Construction Kit Dispay Suite compatibility
+package = ECK
+core = 7.x
+
+dependencies[] = eck
+dependencies[] = ds
+
+files[] = eck_ds.ds_fields_info.inc
diff --git a/modules/eck_ds.module b/modules/eck_ds.module
new file mode 100644
index 0000000..3c796d2
--- /dev/null
+++ b/modules/eck_ds.module
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * Implements hook_ds_field_format_summary().
+*/
+function eck_ds_ds_field_format_summary($field) {
+  return ds_ds_field_format_summary($field);
+}
+
+/**
+ * Implements hook_ds_field_settings_form().
+*/
+function eck_ds_ds_field_settings_form($field) {
+  return ds_ds_field_settings_form($field);
+}
+
+/**
+ * Render an uid field.
+ */
+function eck_ds_render_uid_field($field) {
+  // Users without a user name are anonymous users. These are never linked.
+  if (empty($field['entity']->{$field['field_name'] . '_name'})) {
+    return check_plain(variable_get('anonymous', t('Anonymous')));
+  }
+
+  if ($field['formatter'] == 'author') {
+    return $field['entity']->{$field['field_name'] . '_name'};
+  }
+
+  if ($field['formatter'] == 'author_linked') {
+    // We need to cheat Drupal core theming by adding fake user account field
+    $account = clone $field['entity'];
+    $account->name = $field['entity']->{$field['field_name'] . '_name'};
+    $account->picture = $field['entity']->{$field['field_name'] . '_picture'};
+    $account->data = $field['entity']->{$field['field_name'] . '_data'};
+    return theme('username', array('account' => $account));
+  }
+}
diff --git a/plugins/property_behavior/author.inc b/plugins/property_behavior/author.inc
index 6119dc6..fd0797c 100644
--- a/plugins/property_behavior/author.inc
+++ b/plugins/property_behavior/author.inc
@@ -4,9 +4,28 @@ $plugin = array(
   'label' => "Author",
   'entity_save' => 'eck_author_property_entity_save',
   'property_info' => 'eck_author_property_property_info',
+  'entity_load' => 'eck_author_property_entity_load',
   'permissions' => 'eck_author_property_permissions'
 );
 
+function eck_author_property_entity_load($property, $vars){
+  $entities = $vars['entities'];
+  // Build an array of all uids for authors, keyed by id.
+  $uids = array();
+  foreach ($entities as $id => $entity) {
+    $uids[$id] = $entity->$property;
+  }
+  // Fetch name, picture, and data for these users.
+  $user_fields = db_query("SELECT uid, name, picture, data FROM {users} WHERE uid IN (:uids)", array(':uids' => $uids))->fetchAllAssoc('uid');
+
+  // Add these values back into the entity objects.
+  foreach ($uids as $id => $uid) {
+    $entities[$id]->{$property.'_name'} = $user_fields[$uid]->name;
+    $entities[$id]->{$property.'_picture'} = $user_fields[$uid]->picture;
+    $entities[$id]->{$property.'_data'} = $user_fields[$uid]->data;
+  }
+}
+
 function eck_author_property_entity_save($property, $vars){
   $entity = $vars['entity'];
   if(isset($entity->is_new) && $entity->is_new && empty($entity->{$property})){
@@ -37,3 +56,27 @@ function eck_author_property_permissions($property, $vars){
   }
   return $allow;
 }
+
+if (module_exists('eck_ds')) {
+
+  $plugin['ds_fields_info'] = 'eck_author_property_ds_fields_info';
+
+  function eck_author_property_ds_fields_info($property, $vars){
+    // Author.
+    $entity_type = $vars['entity_type'];
+    $property_info = $entity_type->properties[$property];
+    $vars['fields'][$property] = array(
+      'title' => $entity_type->properties[$property]['label'],
+      'field_type' => DS_FIELD_TYPE_FUNCTION,
+      'function' => 'eck_ds_render_uid_field',
+      'properties' => array(
+        'formatters' => array(
+          'author' => $entity_type->properties[$property]['label'],
+          'author_linked' => t('Author linked to profile')
+        ),
+      ),
+    );
+    return $vars;
+  }
+
+}
diff --git a/plugins/property_behavior/created.inc b/plugins/property_behavior/created.inc
index 3be2448..3348610 100644
--- a/plugins/property_behavior/created.inc
+++ b/plugins/property_behavior/created.inc
@@ -18,3 +18,30 @@ function eck_created_property_property_info($property, $vars){
   $vars['properties'][$property]['description'] = t("The date the entity was created.");
   return $vars;
 }
+
+if (module_exists('eck_ds')) {
+
+  $plugin['ds_fields_info'] = 'eck_created_property_ds_fields_info';
+
+  function eck_created_property_ds_fields_info($property, $vars){
+    // Author.
+    $entity_type = $vars['entity_type'];
+    $property_info = $entity_type->properties[$property];
+
+    $format_types = system_get_date_types();
+    $date_formatters = array();
+    foreach ($format_types as $formatter) {
+      $date_formatters['ds_post_date_' . $formatter['type']] = t($formatter['title']);
+    }
+    $vars['fields'][$property] = array(
+      'title' => $entity_type->properties[$property]['label'],
+      'field_type' => DS_FIELD_TYPE_FUNCTION,
+      'function' => 'ds_render_date_field',
+      'properties' => array(
+        'formatters' => $date_formatters,
+      ),
+    );
+    return $vars;
+  }
+
+}
diff --git a/plugins/property_behavior/title.inc b/plugins/property_behavior/title.inc
index d207edf..343858a 100644
--- a/plugins/property_behavior/title.inc
+++ b/plugins/property_behavior/title.inc
@@ -85,3 +85,28 @@ function _eck_title_property_extract_title($entity, $property){
   return $title;
 }
 
+if (module_exists('eck_ds')) {
+
+  $plugin['ds_fields_info'] = 'eck_title_property_ds_fields_info';
+
+  function eck_title_property_ds_fields_info($property, $vars){
+    // Label
+    $entity_type = $vars['entity_type'];
+    $property_info = $entity_type->properties[$property];
+    $vars['fields'][$property] = array(
+        'title' => $entity_type->properties[$property]['label'],
+        'field_type' => DS_FIELD_TYPE_FUNCTION,
+        'function' => 'ds_render_field',
+        'properties' => array(
+          'entity_render_key' => $property,
+          'settings' => array(
+            'link' => array('type' => 'select', 'options' => array('no', 'yes')),
+            'wrapper' => array('type' => 'textfield', 'description' => t('Eg: h1, h2, p')),
+            'class' => array('type' => 'textfield', 'description' => t('Put a class on the wrapper. Eg: block-title')),
+          ),
+          'default' => array('wrapper' => 'h2', 'link' => 0, 'class' => ''),
+        ),
+    );
+    return $vars;
+  }
+}
