diff --git a/modules/ds_extras/ds_extras.module b/modules/ds_extras/ds_extras.module
index ff3ed37..6848e6b 100644
--- a/modules/ds_extras/ds_extras.module
+++ b/modules/ds_extras/ds_extras.module
@@ -250,6 +250,22 @@ function ds_extras_ds_field_theme_functions_info() {
 /**
  * Implements hook_form_FORM_ID_alter().
  */
+function ds_extras_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
+  $theme_functions = module_invoke_all('ds_field_theme_functions_info');
+  unset($theme_functions['theme_ds_field_expert']);
+  $form['instance']['ds_extras_field_template'] = array(
+    '#type' => 'select',
+    '#title' => t('Default field template'),
+    '#default_value' => isset($form['#instance']['ds_extras_field_template']) ? $form['#instance']['ds_extras_field_wrapper'] : '',
+    '#options' => $theme_functions,
+    '#description' => t('Choose the HTML to use to wrap the field.'),
+    '#empty_option' => t(' - '),
+  );
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
 function ds_extras_form_ds_styles_form_alter(&$form, &$form_state) {
   $form['ds_styles_fields'] = array(
     '#type' => 'textarea',
@@ -275,8 +291,9 @@ function ds_preprocess_field(&$variables) {
     $field_settings[$variables['element']['#entity_type']][$variables['element']['#bundle']][$variables['element']['#view_mode']] = ds_get_field_settings($variables['element']['#entity_type'], $variables['element']['#bundle'], $variables['element']['#view_mode']);
   }
 
-  // Get the field name.
+  // Get the field name and field instance info - if available.
   $field_name = $variables['element']['#field_name'];
+  $field_instance_info = field_info_instance($variables['element']['#entity_type'], $field_name, $variables['element']['#bundle']);
 
   // Check if this field has custom output settings.
   if (isset($field_settings[$variables['element']['#entity_type']][$variables['element']['#bundle']][$variables['element']['#view_mode']][$field_name]['ft'])) {
@@ -296,12 +313,23 @@ function ds_preprocess_field(&$variables) {
     }
   }
 
-  // Determine the field function. In case it's something different
+  // Determine the field template. In case it's something different
   // than theme_field, we'll add that function as a suggestion.
   if (isset($config['func'])) {
     $variables['ds-config'] = $config;
+    // Either it uses the function.
     $variables['theme_hook_suggestions'][] = $config['func'];
+    // Or the template file.
+    $variables['theme_hook_suggestions'][] = 'field__' . str_replace('theme_ds_field_', '', $config['func']);
+  }
+  // Check if we have a default field templat on insance level.
+  elseif (isset($field_instance_info['ds_extras_field_template']) && !empty($field_instance_info['ds_extras_field_template'])) {
+    // Either it uses the function.
+    $variables['theme_hook_suggestions'][] = $field_instance_info['ds_extras_field_template'];
+    // Or the template file.
+    $variables['theme_hook_suggestions'][] = 'field__' . str_replace('theme_ds_field_', '', $field_instance_info['ds_extras_field_template']);
   }
+  // Default theming function.
   else {
     $field_theme_function = variable_get('ft-default', 'theme_field');
     if ($field_theme_function != 'theme_field') {
diff --git a/modules/ds_extras/ds_extras.registry.inc b/modules/ds_extras/ds_extras.registry.inc
index 630520c..13b3d58 100644
--- a/modules/ds_extras/ds_extras.registry.inc
+++ b/modules/ds_extras/ds_extras.registry.inc
@@ -175,6 +175,7 @@ function _ds_extras_module_implements_alter(&$implementations, $hook) {
   $fs_hooks = array(
     'ds_field_settings_alter',
     'form_ds_styles_form_alter',
+    'form_field_ui_field_edit_form_alter',
     'theme',
   );
   if (!variable_get('ds_extras_field_template', FALSE) && in_array($hook, $fs_hooks)) {
