diff --git a/feeds.module b/feeds.module
index 2084b78353f95273c3901c3185600224d8eb5719..7f483b4083fbdf946b0a70d41ee3c3c5569412e3 100644
--- a/feeds.module
+++ b/feeds.module
@@ -1044,30 +1044,6 @@ function feeds_include_simplepie() {
   return FALSE;
 }
 
-/**
- * Simplified drupal_alter().
- *
- * - None of that 'multiple parameters by ref' crazyness.
- * - Don't use module_implements() to allow hot including on behalf
- *   implementations (see mappers/).
- *
- * @todo This needs to be removed and drupal_alter() used. This is crazy dumb.
- */
-function feeds_alter($type, &$data) {
-  $args = array(&$data);
-  $additional_args = func_get_args();
-  array_shift($additional_args);
-  array_shift($additional_args);
-  $args = array_merge($args, $additional_args);
-
-  $hook = $type . '_alter';
-  foreach (module_list() as $module) {
-    if (module_hook($module, $hook)) {
-      call_user_func_array($module . '_' . $hook, $args);
-    }
-  }
-}
-
 /**
  * @}
  */
diff --git a/plugins/FeedsNodeProcessor.inc b/plugins/FeedsNodeProcessor.inc
index 11844c1267407910055a3f2b41d8b79f6481f89d..b80953b1698f302f565d46ff61f806a614dfbfde 100644
--- a/plugins/FeedsNodeProcessor.inc
+++ b/plugins/FeedsNodeProcessor.inc
@@ -310,7 +310,9 @@ class FeedsNodeProcessor extends FeedsProcessor {
 
     // Let other modules expose mapping targets.
     self::loadMappers();
-    feeds_alter('feeds_processor_targets', $targets, 'node', $this->config['content_type']);
+    $entity_type = $this->entityType();
+    $bundle = $this->config['content_type'];
+    drupal_alter('feeds_processor_targets', $targets, $entity_type, $bundle);
 
     return $targets;
   }
diff --git a/plugins/FeedsParser.inc b/plugins/FeedsParser.inc
index 5cdac88fff0c66691e0878917274855a7da2a9a7..209802b7adc42ff5679d815aac181e3eedb0aed7 100644
--- a/plugins/FeedsParser.inc
+++ b/plugins/FeedsParser.inc
@@ -96,7 +96,8 @@ abstract class FeedsParser extends FeedsPlugin {
   public function getMappingSources() {
     self::loadMappers();
     $sources = array();
-    feeds_alter('feeds_parser_sources', $sources, feeds_importer($this->id)->config['content_type']);
+    $content_type = feeds_importer($this->id)->config['content_type'];
+    drupal_alter('feeds_parser_sources', $sources, $content_type);
     if (!feeds_importer($this->id)->config['content_type']) {
       return $sources;
     }
diff --git a/plugins/FeedsTermProcessor.inc b/plugins/FeedsTermProcessor.inc
index 85a931181100775559cbdfb1ddad3c9766ae1135..7721ff01bde909d2063e7d77f566b36013f6c4c9 100644
--- a/plugins/FeedsTermProcessor.inc
+++ b/plugins/FeedsTermProcessor.inc
@@ -201,7 +201,9 @@ class FeedsTermProcessor extends FeedsProcessor {
     // Let implementers of hook_feeds_term_processor_targets() add their targets.
     try {
       self::loadMappers();
-      feeds_alter('feeds_processor_targets', $targets, 'taxonomy_term', $this->vocabulary()->machine_name);
+      $entity_type = $this->entityType();
+      $bundle = $this->vocabulary()->machine_name;
+      drupal_alter('feeds_processor_targets', $targets, $entity_type, $bundle);
     }
     catch (Exception $e) {
       // Do nothing.
diff --git a/plugins/FeedsUserProcessor.inc b/plugins/FeedsUserProcessor.inc
index c8a1fa4ccd5ddc01cf0756ba5efdd3f21e9930a4..49e3acd033dd182911d39af0fc68ae1007eb051f 100644
--- a/plugins/FeedsUserProcessor.inc
+++ b/plugins/FeedsUserProcessor.inc
@@ -192,7 +192,9 @@ class FeedsUserProcessor extends FeedsProcessor {
 
     // Let other modules expose mapping targets.
     self::loadMappers();
-    feeds_alter('feeds_processor_targets', $targets, 'user', 'user');
+    $entity_type = $this->entityType();
+    $bundle = $this->entityType();
+    drupal_alter('feeds_processor_targets', $targets, $entity_type, $bundle);
 
     return $targets;
   }