diff --git a/apachesolr.module b/apachesolr.module
index c65d953..3cc84d9 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -17,17 +17,10 @@ function apachesolr_menu() {
   $items['admin/config/search/apachesolr'] = array(
     'title'              => 'Apache Solr search',
     'description'        => 'Administer Apache Solr.',
-    'page callback'      => 'apachesolr_index_page',
-    'access arguments'   => array('administer search'),
-    'weight'             => -8,
-    'file'               => 'apachesolr.admin.inc',
-  );
-  $items['admin/config/search/apachesolr/index'] = array(
-    'title'              => 'Default Index',
+    'page callback'      => 'drupal_get_form',
+    'page arguments'     => array('apachesolr_settings'),
     'access arguments'   => array('administer search'),
-    'weight'             => -10,
     'file'               => 'apachesolr.admin.inc',
-    'type'               => MENU_DEFAULT_LOCAL_TASK,
   );
   $items['admin/config/search/apachesolr/settings'] = array(
     'title'              => 'Settings',
@@ -36,7 +29,7 @@ function apachesolr_menu() {
     'page arguments'     => array('apachesolr_settings'),
     'access arguments'   => array('administer search'),
     'file'               => 'apachesolr.admin.inc',
-    'type'               => MENU_LOCAL_TASK,
+    'type'               => MENU_DEFAULT_LOCAL_TASK,
   );
 
   $settings_path = 'admin/config/search/apachesolr/settings/';
@@ -269,6 +262,7 @@ function apachesolr_facetapi_query_types() {
 
 /**
  * Implements hook_facetapi_facet_info().
+ * Currently it only supports the node entity type
  */
 function apachesolr_facetapi_facet_info($searcher_info) {
   $facets = array();
@@ -672,32 +666,6 @@ function apachesolr_get_last_change($namespace) {
 }
 
 /**
- * Returns an array of rows from a query based on an indexing namespace.
- */
-function apachesolr_get_nodes_to_index($namespace, $limit) {
-  $rows = array();
-  if (apachesolr_environment_variable_get(apachesolr_default_environment(), 'apachesolr_read_only', APACHESOLR_READ_WRITE) == APACHESOLR_READ_ONLY) {
-    return $rows;
-  }
-
-  $excluded_types = apachesolr_get_excluded_types($namespace);
-  list($last_change, $last_nid) = apachesolr_get_last_change($namespace);
-  // TODO: remove old code
-  // list($excluded_types, $args, $join_sql, $exclude_sql) = apachesolr_exclude_types($namespace);
-  // $result = db_query_range("SELECT asn.nid, asn.changed FROM {apachesolr_search_node} asn ". $join_sql ."WHERE (asn.changed > :last_changed OR (asn.changed = :last_changed AND asn.nid > :last_nid)) AND asn.status = 1 ". $exclude_sql ."ORDER BY asn.changed ASC, asn.nid ASC", 0, $limit, $args);
-  $query = db_select('apachesolr_search_node', 'asn')
-    ->fields('asn', array('nid', 'changed'))
-    ->condition('asn.status', 1)
-    ->condition(db_or()->condition('asn.changed', $last_change, '>')->condition(db_and()->condition('asn.changed', $last_change)->condition('asn.nid', $last_nid, '>')))
-    ->orderBy('asn.changed', 'ASC')
-    ->orderBy('asn.nid', 'ASC')
-    ->range(0, $limit);
-  apachesolr_query_add_excluded_types($query, $excluded_types);
-  $result = $query->execute();
-  return $result;
-}
-
-/**
  * Function to handle the indexing of nodes.
  *
  * The calling function must supply a namespace.
@@ -844,37 +812,13 @@ function apachesolr_flatten_documents_array($documents, &$tmp) {
   }
 }
 
-function apachesolr_delete_node_from_index($node) {
-  $failed = &drupal_static(__FUNCTION__, FALSE);
-  if ($failed) {
-    return FALSE;
-  }
-  try {
-    $solr = apachesolr_get_solr();
-    $solr->deleteById(apachesolr_document_id($node->nid));
-    apachesolr_index_set_last_updated(REQUEST_TIME);
-    return TRUE;
-  }
-  catch (Exception $e) {
-    watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
-    // Don't keep trying queries if they are failing.
-    $failed = TRUE;
-    return FALSE;
-  }
-}
-
 /**
  * Set the timestamp of the last index update
  * @param $updated
  *   A timestamp or zero. If zero, the variable is deleted.
  */
-function apachesolr_index_set_last_updated($updated = 0) {
-  if ($updated) {
-    variable_set('apachesolr_index_updated', (int) $updated);
-  }
-  else {
-    variable_del('apachesolr_index_updated');
-  }
+function apachesolr_index_set_last_updated($timestamp = 0) {
+  variable_set('apachesolr_indexer_last_run', $timestamp);
 }
 
 /**
@@ -882,7 +826,7 @@ function apachesolr_index_set_last_updated($updated = 0) {
  * @return integer (timestamp)
  */
 function apachesolr_index_get_last_updated() {
-  return variable_get('apachesolr_index_updated', 0);
+  return variable_get('apachesolr_indexer_last_run', 0);
 }
 
 /**
@@ -979,47 +923,6 @@ function apachesolr_clear_cache($env_id) {
 }
 
 /**
- * Implements hook_node_insert().
- */
-function apachesolr_node_insert($node) {
-  // Make sure no node ends up with a timestamp that's in the future by using
-  // REQUEST_TIME rather than the node's changed or created timestamp.
-  db_insert('apachesolr_search_node')->fields(array('nid' => $node->nid, 'status' => $node->status, 'changed' => REQUEST_TIME))->execute();
-}
-
-/**
- * Implements hook_node_delete().
- */
-function apachesolr_node_delete($node, $set_message = TRUE) {
-  if (apachesolr_delete_node_from_index($node)) {
-    // There was no exception, so delete from the table.
-    db_delete('apachesolr_search_node')->condition('nid', $node->nid)->execute();
-    if ($set_message && user_access('administer search') && variable_get('apachesolr_set_nodeapi_messages', 1)) {
-      apachesolr_set_stats_message('Deleted content will be removed from the Apache Solr search index in approximately @autocommit_time.');
-    }
-  }
-}
-
-/**
- * Implements hook_node_update().
- */
-function apachesolr_node_update($node, $set_message = TRUE) {
-  // Check if the node has gone from published to unpublished.
-  if (!$node->status && db_select('apachesolr_search_node', 'asn')->fields('asn', array('status'))->condition('nid', $node->nid)->execute()) {
-    if (apachesolr_delete_node_from_index($node)) {
-      // There was no exception, so update the table.
-      db_update('apachesolr_search_node')->condition('nid', $node->nid)->fields(array('changed' => REQUEST_TIME, 'status' => $node->status))->execute();
-      if ($set_message && user_access('administer search') && variable_get('apachesolr_set_nodeapi_messages', 1)) {
-        apachesolr_set_stats_message('Unpublished content will be removed from the Apache Solr search index in approximately @autocommit_time.');
-      }
-    }
-  }
-  else {
-    db_update('apachesolr_search_node')->condition('nid', $node->nid)->fields(array('changed' => REQUEST_TIME, 'status' => $node->status))->execute();
-  }
-}
-
-/**
  * Call drupal_set_message() with the text.
  *
  * The text is translated with t() and substituted using Solr stats.
@@ -1885,7 +1788,7 @@ function apachesolr_entity_fields($entity_type = 'node') {
     }
 
     // Allow other modules to add or alter mappings.
-    drupal_alter('apachesolr_field_mappings', $mappings);
+    drupal_alter('apachesolr_field_mappings', $mappings, $entity_type);
     $modules = system_get_info('module');
     $instances = field_info_instances($entity_type);
     foreach (field_info_fields() as $field_name => $field) {
diff --git a/apachesolr_search.module b/apachesolr_search.module
index fc17982..fb5a810 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -409,15 +409,6 @@ function theme_apachesolr_search_mlt_recommendation_block($vars) {
 }
 
 /**
- * Implements hook_cron(). Indexes nodes.
- */
-function apachesolr_search_cron() {
-  $cron_limit = variable_get('apachesolr_cron_limit', 50);
-  $rows = apachesolr_get_nodes_to_index('apachesolr_search', $cron_limit);
-  apachesolr_index_nodes($rows, 'apachesolr_search');
-}
-
-/**
  * Implements hook_apachesolr_types_exclude().
  */
 function apachesolr_search_apachesolr_types_exclude($namespace) {
