diff --git a/asset.module b/asset.module
index fd21656..df61865 100644
--- a/asset.module
+++ b/asset.module
@@ -575,8 +575,9 @@ function _assets_get_icons() {
  * Helper function to get supported field types.
  */
 function _assets_get_supported_field_types() {
-  // @todo: Provide a hook.
-  return array('text', 'text_long', 'list_boolean', 'list_text');
+  $types = array('text', 'text_long', 'list_boolean', 'list_text');
+  drupal_alter('asset_field_types', $types);
+  return $types;
 }
 
 /*
diff --git a/includes/asset.admin.inc b/includes/asset.admin.inc
index 3774d52..1348f7a 100644
--- a/includes/asset.admin.inc
+++ b/includes/asset.admin.inc
@@ -475,16 +475,14 @@ function _assets_clean_fields(&$form, $options = array()) {
             if (!empty($info) && in_array($info['type'], $supported_types)) {
               unset($field);
 
-              switch ($info['type']) {
-                case 'text':
-                case 'text_long':
-                case 'list_boolean':
-                case 'list_text':
-                  $field = &$form[$key][$form[$key]['#language']][$delta];
-                  if ($multiple) {
-                    $field = &$form[$key][$form[$key]['#language']][$delta]['value'];
-                  }
-                  break;
+              if (in_array($info['type'], $supported_types)) {
+                $field = &$form[$key][$form[$key]['#language']][$delta];
+
+                // How it should work? Field is not processed yet.
+                // So no element-specific sub-elements exist.
+                // if ($multiple) {
+                //  $field = &$form[$key][$form[$key]['#language']][$delta]['value'];
+                // }
               }
 
               if (isset($field) && !$field['#required']) {
@@ -545,6 +543,7 @@ function assets_override_form_submit(&$form, &$form_state) {
   $view_mode = isset($values['view_mode']) ? $values['view_mode'] : ASSET_DEFAULT_MODE;
   $alignment = isset($values['align']) ? $values['align'] : '';
   $asset = entity_ui_form_submit_build_entity($form, $form_state);
+  $asset->save();
   $placeholder = assets_get_placeholder($asset, array('mode' => $view_mode, 'align' => $alignment), $original_asset);
   $placeholder = addslashes($placeholder);
   $placeholder = str_replace("\r\n", '\n', $placeholder);
