diff --git a/apachesolr.index.inc b/apachesolr.index.inc
index 019c6b7..c1edba7 100644
--- a/apachesolr.index.inc
+++ b/apachesolr.index.inc
@@ -342,8 +342,13 @@ function apachesolr_index_get_entities_to_index($limit, $env_id, $entity_type =
 
       $records = $query->execute()->fetchAll();
 
-      // @todo This assumes an int ID, which technically the entity system
-      // doesn't require.  Fix this later.
+      // Technically the entity system does not require an integer.
+      // However, documentation mentions :
+      // id: The name of the property that contains the primary id of the
+      // entity. Every entity object passed to the Field API must have this
+      // property and its value must be numeric.
+      // Knowing this we can savely use integer functions such as max() on
+      // the id.
       $max_id = 0;
       foreach ($records as $record) {
         $rows[] = $record;
diff --git a/apachesolr.module b/apachesolr.module
index cc70dc3..9d63f92 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -504,17 +504,29 @@ function apachesolr_document_id($id, $entity = 'node') {
 }
 
 /**
+ * Mark one entity as needing re-indexing.
+ */
+function apachesolr_mark_entity($entity_id, $entity_type) {
+  $table = apachesolr_index_get_indexer_table($entity_type);
+  if (!empty($table)) {
+    db_update($table)
+      ->condition('entity_id', $entity_id)
+      ->fields(array('changed' => REQUEST_TIME))
+      ->execute();
+  }
+}
+
+/**
  * Implements hook_user().
  *
  * Mark nodes as needing re-indexing if the author name changes.
- * @todo Support backwards compatibility
  * @todo performance issue. see http://drupal.org/node/592522
  */
 function apachesolr_user_update(&$edit, $account, $category) {
   if (isset($edit['name']) && $account->name != $edit['name']) {
-
-    $nid_query = db_select('node')->fields('node', array('nid'))->where("uid = :uid", array(':uid' => $account->uid));
-    db_update('apachesolr_search_node')->condition('nid', $nid_query, 'IN')->fields(array('changed' => REQUEST_TIME))->execute();
+    $table = apachesolr_index_get_indexer_table('node');
+    $entity_ids = db_select('node')->fields('node', array('nid'))->where("uid = :uid", array(':uid' => $account->uid));
+    db_update($table)->condition('entity_id', $entity_ids, 'IN')->fields(array('changed' => REQUEST_TIME))->execute();
   }
 }
 
@@ -522,13 +534,13 @@ function apachesolr_user_update(&$edit, $account, $category) {
  * Implements hook_taxonomy().
  *
  * Mark nodes as needing re-indexing if a term name changes.
- * @todo Support backwards compatibility
  * @todo performance issue. see http://drupal.org/node/592522
  * @todo the rest, such as term deletion.
  */
 function apachesolr_taxonomy_term_update($term) {
-  $nid_query = db_select('taxonomy_index')->fields('taxonomy_index', array('nid'))->where("tid = :tid", array(':tid' => $term->tid));
-  db_update('apachesolr_search_node')->condition('nid', $nid_query, 'IN')->fields(array('changed' => REQUEST_TIME))->execute();
+  $table = apachesolr_index_get_indexer_table('node');
+  $entity_ids = db_select('taxonomy_index')->fields('taxonomy_index', array('nid'))->where("tid = :tid", array(':tid' => $term->tid));
+  db_update($table)->condition('nid', $entity_ids, 'IN')->fields(array('changed' => REQUEST_TIME))->execute();
 }
 
 /**
@@ -542,43 +554,35 @@ function apachesolr_taxonomy_term_update($term) {
  * Implements hook_comment_insert().
  */
 function apachesolr_comment_insert($comment) {
-  apachesolr_mark_node($comment->nid);
+  apachesolr_mark_entity('node', $comment->nid);
 }
 
 /**
  * Implements hook_comment_update().
  */
 function apachesolr_comment_update($comment) {
-  apachesolr_mark_node($comment->nid);
+  apachesolr_mark_entity('node', $comment->nid);
 }
 
 /**
  * Implements hook_comment_delete()
  */
 function apachesolr_comment_delete($comment) {
-  apachesolr_mark_node($comment->nid);
+  apachesolr_mark_entity('node', $comment->nid);
 }
 
 /**
  * Implements hook_comment_publish()
  */
 function apachesolr_comment_publish($comment) {
-  apachesolr_mark_node($comment->nid);
+  apachesolr_mark_entity('node', $comment->nid);
 }
 
 /**
  * Implements hook_comment_unpublish()
  */
 function apachesolr_comment_unpublish($comment) {
-  apachesolr_mark_node($comment->nid);
-}
-
-/**
- * Mark one node as needing re-indexing.
- * @todo Support backwards compatibility
- */
-function apachesolr_mark_node($nid) {
-  db_update('apachesolr_search_node')->condition('nid', $nid)->fields(array('changed' => REQUEST_TIME))->execute();
+  apachesolr_mark_entity('node', $comment->nid);
 }
 
 /**
@@ -595,8 +599,9 @@ function apachesolr_node_type_delete($info) {
 function apachesolr_node_type_update($info) {
   if (!empty($info->old_type) && $info->old_type != $info->type) {
     // We cannot be sure we are going before or after node module.
-    $nid = db_select('node')->fields('node', array('nid'))->where("type = :new OR type = :old", array(':new' => $info->type, ':old' => $info->old_type));
-    db_update('apachesolr_search_node')->condition('nid', $nid, 'IN')->fields(array('changed' => REQUEST_TIME))->execute();
+    $entity_ids = db_select('node')->fields('node', array('nid'))->where("type = :new OR type = :old", array(':new' => $info->type, ':old' => $info->old_type));
+    $table = apachesolr_index_get_indexer_table('node');
+    db_update($table)->condition('entity_id', $entity_ids, 'IN')->fields(array('changed' => REQUEST_TIME))->execute();
   }
 }
 
diff --git a/apachesolr_access/apachesolr_access.module b/apachesolr_access/apachesolr_access.module
index 6ceb96a..e352934 100644
--- a/apachesolr_access/apachesolr_access.module
+++ b/apachesolr_access/apachesolr_access.module
@@ -100,7 +100,7 @@ function apachesolr_access_node_access_records($node) {
   // full rebuild.
   if (empty($node->apachesolr_access_node_ignore) && !node_access_needs_rebuild()) {
     // Only one node is being changed - mark for re-indexing.
-    apachesolr_mark_node($node->nid);
+    apachesolr_mark_entity('node', $node->nid);
   }
 }
 
diff --git a/drush/apachesolr.drush.inc b/drush/apachesolr.drush.inc
index d1ce956..b3d355b 100644
--- a/drush/apachesolr.drush.inc
+++ b/drush/apachesolr.drush.inc
@@ -97,15 +97,7 @@ function apachesolr_drush_help($section) {
 function apachesolr_drush_solr_delete_index() {
   $args = func_get_args();
   $env_id = apachesolr_default_environment();
-  if (count($args) > 0) {
-    foreach ($args as $type) {
-      //@Todo : Add entity type support
-      apachesolr_index_delete_index($env_id, $type);
-    }
-  }
-  else {
-    apachesolr_index_delete_index($env_id);
-  }
+  apachesolr_index_delete_index($env_id);
 }
 
 function apachesolr_drush_solr_mark_for_reindex() {
