diff --git a/feeds_ui/feeds_ui.admin.inc b/feeds_ui/feeds_ui.admin.inc
index f30c1f2053357d16f6bf0f8282dbc8bdc19c515e..b0b576f5b5e087c78e62e3da7877d491b57e4a1f 100644
--- a/feeds_ui/feeds_ui.admin.inc
+++ b/feeds_ui/feeds_ui.admin.inc
@@ -165,11 +165,10 @@ function feeds_ui_build_mapping_form(&$form_state, $feed) {
 
 /**
  * Edit plugin configuration.
- * 
- * @todo: move plugin form generation into feed class.
  */
 function feeds_ui_build_plugin_form(&$form_state, $feed) {
   $form = array();
+  $form['#feed'] = $feed;
   $form['plugins'] = array(
     '#type' => 'fieldset',
     '#title' => t('Plugins'),
@@ -182,6 +181,21 @@ function feeds_ui_build_plugin_form(&$form_state, $feed) {
   return $form;
 }
 
+/**
+ * Validation handler for feeds_ui_build_edit_form().
+ */
+function feeds_ui_build_plugin_form_validate($form, &$form_state) {
+  $form['#feed']->pluginFormValidate($form, &$form_state);
+}
+
+/**
+ * Submit handler for feeds_ui_build_edit_form().
+ */
+function feeds_ui_build_plugin_form_submit($form, &$form_state) {
+  $form['#feed']->pluginFormSubmit($form, &$form_state);
+  drupal_set_message(t('Saved configuration'));
+}
+
 /**
  * Delete form.
  */
diff --git a/includes/feed.inc b/includes/feed.inc
index 9755ee85106bc919f1abe75e40cd35fd2a6bc2f7..6dc614b955bcf314332ba7764469c65b890da4fa 100644
--- a/includes/feed.inc
+++ b/includes/feed.inc
@@ -110,6 +110,24 @@ class Feed extends FeedsConfigurable {
     return $form;
   }
 
+  /**
+   * Validation handler for pluginForm().
+   */
+  public function pluginFormValidate($form, &$form_state) {
+    $form_state['values']['processors'] = array_filter($form_state['values']['processors']);
+    if (!count($form_state['values']['processors'])) {
+      form_set_error('processors', t('At least one processor needs to be enabled.'));
+    }
+  }
+
+  /**
+   * Submit handler for pluginForm().
+   */
+  public function pluginFormSubmit($form, &$form_state) {
+    $this->addConfig($form_state['values']);
+    $this->save();
+  }
+
   /**
    * Import feed by using configured fetchers, parsers, processors.
    */
@@ -289,8 +307,6 @@ class FeedsConfigurable {
 
   /**
    * Validation handler for configForm().
-   *
-   * @return unknown
    */
   public function configFormValidate($form, &$form_state) {
   }