diff --git a/ldap_authentication/ldap_authentication.info b/ldap_authentication/ldap_authentication.info
index 6dc9f06..7bf77ef 100644
--- a/ldap_authentication/ldap_authentication.info
+++ b/ldap_authentication/ldap_authentication.info
@@ -15,4 +15,3 @@ files[] = ldap_authentication.theme.inc
 files[] = ldap_authentication.admin.inc
 files[] = tests/ldap_authentication.test
 
-features[variable][] = "ldap_authentication_conf"
diff --git a/ldap_authorization/tests/ldap_authorization_simpletest1/ldap_authorization_simpletest1.info b/ldap_authorization/tests/ldap_authorization_simpletest1/ldap_authorization_simpletest1.info
index e84cccc..cf87b6b 100644
--- a/ldap_authorization/tests/ldap_authorization_simpletest1/ldap_authorization_simpletest1.info
+++ b/ldap_authorization/tests/ldap_authorization_simpletest1/ldap_authorization_simpletest1.info
@@ -2,17 +2,6 @@ core = "7.x"
 dependencies[] = "ldap_authorization"
 dependencies[] = "strongarm"
 description = "Ldap Authorization SimpleTest 1"
-features[ctools][] = "ldap_authorization:ldap_authorization:1"
-features[ctools][] = "ldap_servers:ldap_servers:1"
-features[ctools][] = "strongarm:strongarm:1"
-features[ldap_authorization][] = "drupal_role"
-features[ldap_servers][] = "ldapauthor1"
-features[variable][] = "ldap_authentication_conf"
-features[variable][] = "ldap_servers_encrypt_key"
-features[variable][] = "ldap_servers_encryption"
-features[variable][] = "ldap_servers_require_ssl_for_credentails"
-features[variable][] = "user_email_verification"
-features[variable][] = "user_register"
 name = "Ldap Authorization SimpleTest"
 package = "Features"
 project = "ldap_authorization_simpletest1"
diff --git a/ldap_servers/LdapServer.class.php b/ldap_servers/LdapServer.class.php
index f6c8449..b3483a0 100644
--- a/ldap_servers/LdapServer.class.php
+++ b/ldap_servers/LdapServer.class.php
@@ -65,7 +65,7 @@ class LdapServer {
     );
 
   }
-
+  
   /**
    * Constructor Method
    */
@@ -74,14 +74,26 @@ class LdapServer {
       return;
     }
 
-    $this->sid = $sid;
-    $this->detailedWatchdogLog = variable_get('ldap_help_watchdog_detail', 0);
-    $select = db_select('ldap_servers', 'ldap_servers');
-    $select->fields('ldap_servers');
-    $select->condition('ldap_servers.sid',  $this->sid);
-
-
-    $server_record = $select->execute()->fetchAllAssoc('sid',  PDO::FETCH_ASSOC);
+    $server_record = array();
+    if (module_exists('ctools')) {
+      ctools_include('export');
+	    $result = ctools_export_load_object('ldap_servers', 'names', array($sid));
+		  if (isset($result[$sid])) {
+		    $server_record[$sid] = $result[$sid];
+		  }
+	    foreach ($server_record[$sid] as $property => $value) {
+	      $this->{$property} = $value;
+	    }
+    }
+    else {
+	    $select = db_select('ldap_servers')
+		    ->fields('ldap_servers')
+		    ->condition('ldap_servers.sid',  $sid)
+		    ->execute();
+		  foreach ($select as $record) {
+		    $server_record[$record->sid] = $record;
+		  }
+    }
     if (!isset($server_record[$sid])) {
       $this->inDatabase = FALSE;
       return;
@@ -90,20 +102,23 @@ class LdapServer {
 
     if ($server_record) {
       $this->inDatabase = TRUE;
+	    $this->sid = $sid;
+	    $this->detailedWatchdogLog = variable_get('ldap_help_watchdog_detail', 0);
     }
     else {
       // @todo throw error
     }
+    
     foreach ($this->field_to_properties_map() as $db_field_name => $property_name ) {
-      if (isset($server_record[$db_field_name])) {
-        $this->{$property_name} = $server_record[$db_field_name];
+      if (isset($server_record->$db_field_name)) {
+        $this->{$property_name} = $server_record->$db_field_name;
       }
     }
     if (is_scalar($this->basedn)) {
       $this->basedn = unserialize($this->basedn);
     }
-    if (isset($server_record['bindpw']) && $server_record['bindpw'] != '') {
-      $this->bindpw = $server_record['bindpw'];
+    if (isset($server_record->bindpw) && $server_record->bindpw != '') {
+      $this->bindpw = $server_record->bindpw;
       $this->bindpw = ldap_servers_decrypt($this->bindpw);
     }
   }
diff --git a/ldap_servers/LdapServerAdmin.class.php b/ldap_servers/LdapServerAdmin.class.php
index 5bdd735..a1235ba 100644
--- a/ldap_servers/LdapServerAdmin.class.php
+++ b/ldap_servers/LdapServerAdmin.class.php
@@ -14,25 +14,31 @@ class LdapServerAdmin extends LdapServer {
 
   public $bindpw_new = FALSE;
   public $bindpw_clear = FALSE;
-
+  
   /**
    * @param $type = 'all', 'enabled'
    */
   public static function getLdapServerObjects($sid = NULL, $type = NULL, $class = 'LdapServer') {
-    $select = db_select('ldap_servers', 'ldap_servers');
-    $select->fields('ldap_servers');
-    try {
-      $servers = $select->execute()->fetchAllAssoc('sid',  PDO::FETCH_ASSOC);
-    }
-    catch (Exception $e) {
-      drupal_set_message(t('server index query failed. Message = %message, query= %query',
-        array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
-      return array();
+    $servers = array();
+    if (module_exists('ctools')) {
+      ctools_include('export');
+	    $select = ctools_export_load_object('ldap_servers', 'all');
     }
-    foreach ($servers as $sid => $server) {
-      $servers[$sid] = ($class == 'LdapServer') ? new LdapServer($sid) : new LdapServerAdmin($sid);
+    else {
+	    try {
+		    $select = db_select('ldap_servers', 'ldap_servers')
+			    ->fields('ldap_servers')
+			    ->execute();
+	    }
+	    catch (Exception $e) {
+	      drupal_set_message(t('server index query failed. Message = %message, query= %query',
+	        array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
+	      return array();
+	    }
+    }
+    foreach ($select as $result) {
+      $servers[$result->sid] = ($class == 'LdapServer') ? new LdapServer($result->sid) : new LdapServerAdmin($result->sid);
     }
-
     return $servers;
 
   }
@@ -66,46 +72,44 @@ class LdapServerAdmin extends LdapServer {
 
   public function save($op) {
 
+    $entry = $this;
     foreach ($this->field_to_properties_map() as $field_name => $property_name) {
-      $entry[$field_name] = $this->{$property_name};
+      $entry->{$field_name} = $this->{$property_name};
     }
+    $entry->bindpw = ldap_servers_encrypt($this->bindpw);
     if ($this->bindpw_new) {
-      $entry['bindpw'] =  ldap_servers_encrypt($this->bindpw_new);
+      $entry->bindpw =  ldap_servers_encrypt($this->bindpw_new);
     }
     elseif ($this->bindpw_clear) {
-      $entry['bindpw'] = NULL;
+      $entry->bindpw = NULL;
     }
+    $entry->tls = (int)$entry->tls;
 
-    $entry['basedn'] = serialize($entry['basedn']);
-    $entry['tls'] = (int)$entry['tls'];
+    $result = FALSE;
     if ($op == 'edit') {
-
-      try {
-        $count = db_update('ldap_servers')
-        ->fields($entry)
-        ->condition('sid', $entry['sid'])
-        ->execute();
-      }
-      catch (Exception $e) {
-        drupal_set_message(t('db update failed. Message = %message, query= %query',
-        array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
-      }
+	    if (module_exists('ctools')) {
+	      ctools_include('export');
+		    $result = ctools_export_crud_save('ldap_servers', $entry);
+	    }
+	    else {
+	      $result = drupal_write_record('ldap_servers', $entry, 'sid');
+	    }
     }
     else {
-      try {
-        $ret = db_insert('ldap_servers')
-        ->fields($entry)
-        ->execute();
-      }
-      catch (Exception $e) {
-        drupal_set_message(t('db insert failed. Message = %message, query= %query',
-          array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
-      }
-
-      $this->inDatabase = TRUE;
+	    if (module_exists('ctools')) {
+	      ctools_include('export');
+		    $result = ctools_export_crud_save('ldap_servers', $entry);
+	    }
+	    else {
+	      $result = drupal_write_record('ldap_servers', $entry);
+	    }
+    }
+    if ($result) {
+	    $this->inDatabase = TRUE;
+    }
+    else {
+      drupal_set_message('Failed to write LDAP Server to the database.');
     }
-
-
   }
 
   public function delete($sid) {
@@ -117,6 +121,26 @@ class LdapServerAdmin extends LdapServer {
       return FALSE;
     }
   }
+  public function getLdapServerActions() {
+    $switch = ($this->status ) ? 'disable' : 'enable';
+    $actions = array();
+    $actions[] =  l(t('edit'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/edit/' . $this->sid);
+    if (property_exists($this, 'type')) {
+      if ($this->type == 'Overridden') {
+	        $actions[] = l(t('revert'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/delete/' . $this->sid);
+      }
+      if ($this->type == 'Normal') {
+	        $actions[] = l(t('delete'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/delete/' . $this->sid);
+      }
+    }
+    else {
+        $actions[] = l(t('delete'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/delete/' . $this->sid);
+    }
+    $actions[] = l(t('test'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/test/' . $this->sid);
+    $actions[] = l($switch, LDAP_SERVERS_MENU_BASE_PATH . '/servers/' . $switch . '/' . $this->sid);
+    return $actions;
+  }
+
   public function drupalForm($op) {
 
     drupal_add_css(drupal_get_path('module', 'ldap_servers') . '/ldap_servers.admin.css', 'module', 'all');
@@ -452,8 +476,8 @@ public function drupalFormWarnings($op, $values)  {
 protected function warnings($op) {
 
     $warnings = array();
-    if ($this->type) {
-      $defaults = ldap_servers_get_ldap_defaults($this->type);
+    if ($this->ldap_type) {
+      $defaults = ldap_servers_get_ldap_defaults($this->ldap_type);
       if (isset($defaults['user']['user_attr']) && ($this->user_attr != $defaults['user']['user_attr'])) {
         $tokens = array('%name' => $defaults['name'], '%default' => $defaults['user']['user_attr'], '%user_attr' => $this->user_attr);
         $warnings['user_attr'] =  t('The standard UserName attribute in %name is %default.  You have %user_attr. This may be correct
diff --git a/ldap_servers/ldap_servers.admin.inc b/ldap_servers/ldap_servers.admin.inc
index 079a5b9..7b456bf 100644
--- a/ldap_servers/ldap_servers.admin.inc
+++ b/ldap_servers/ldap_servers.admin.inc
@@ -230,22 +230,10 @@ function ldap_servers_admin_enable_disable_submit($form, &$form_state) {
   if ($values['confirm'] && $sid) {
 
     $form_state['redirect'] = LDAP_SERVERS_MENU_BASE_PATH . '/servers';
+    $ldap_server = new LdapServerAdmin($sid);
 
-    $entry = array(
-        'sid' => $sid,
-        'status' => $status,
-    );
-    try {
-      $count = db_update('ldap_servers')
-      ->fields($entry)
-      ->condition('sid', $sid)
-      ->execute();
-    }
-    catch (Exception $e) {
-      drupal_set_message(t('db update failed. Message = %message, query= %query',
-        array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
-    }
-
+    $ldap_server->status = $status;
+    $ldap_server->save('edit');
     $tokens = array('%name' => $values['name'], '!sid' => $sid, '!action' => t($values['action']) . 'd');
     drupal_set_message(t('LDAP Server Configuration %name (server id = !sid) has been !action.', $tokens));
     $message = t('LDAP Server !action: %name (sid = !sid) ', $tokens);
diff --git a/ldap_servers/ldap_servers.info b/ldap_servers/ldap_servers.info
index 730a781..60b771e 100644
--- a/ldap_servers/ldap_servers.info
+++ b/ldap_servers/ldap_servers.info
@@ -22,6 +22,3 @@ files[] = tests/ldap_servers.test
 
 configure = admin/config/people/ldap/servers
 
-features[variable][] = "ldap_servers_encryption"
-features[variable][] = "ldap_servers_require_ssl_for_credentials"
-features[variable][] = "ldap_servers_encrypt_key"
diff --git a/ldap_servers/ldap_servers.install b/ldap_servers/ldap_servers.install
index fc692ba..a2de020 100644
--- a/ldap_servers/ldap_servers.install
+++ b/ldap_servers/ldap_servers.install
@@ -67,6 +67,7 @@ function ldap_servers_schema() {
     'export' => array(
       'key' => 'sid',
       'key name' => 'Server ID',
+      'primary key' => 'numeric_sid',
       'identifier' => 'ldap_servers_conf',
       'api' => array(
         'owner' => 'ldap_servers',
@@ -74,7 +75,6 @@ function ldap_servers_schema() {
         'minimum_version' => 1,
         'current_version' => 1,
         ),
-      'export type string' => 'ctools_storage_type',
       ),
     'fields' => array(
       'sid' => array(
@@ -129,6 +129,7 @@ function ldap_servers_schema() {
       ),
       'basedn' => array(
         'type' => 'text',
+        'serialize' => TRUE,
       ),
       'binddn' => array(
         'type' => 'varchar',
diff --git a/ldap_servers/ldap_servers.theme.inc b/ldap_servers/ldap_servers.theme.inc
index cb6a9cf..7489711 100644
--- a/ldap_servers/ldap_servers.theme.inc
+++ b/ldap_servers/ldap_servers.theme.inc
@@ -34,26 +34,18 @@ function theme_ldap_servers_list($variables) {
   if ($actions) {
     $table['header'][] = "Operations";
   }
-
   if (count($ldap_servers)) {
     foreach ($ldap_servers as $sid => $ldap_server ) {
       $row =  array(
         $ldap_server->name,
-        $ldap_server->type,
+        $ldap_server->ldap_type,
         ($ldap_server->status == 1) ? "Yes" : "No",
         $ldap_server->address
           );
       if ($actions) {
-        $switch = ($ldap_server->status ) ? 'disable' : 'enable';
-        $actions =  ' | ' . l(t('edit'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/edit/' . $sid) . ' | ' .
-            l(t('delete'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/delete/' . $sid) . ' | ' .
-            l(t('test'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/test/' . $sid) . ' | ' .
-            l($switch, LDAP_SERVERS_MENU_BASE_PATH . '/servers/' . $switch . '/' . $sid) . ' | ';
-
-
-        $row[] = $actions;
+        $admin = new LdapServerAdmin($ldap_server->sid);
+        $row[] = join(' | ', $admin->getLdapServerActions());
       }
-
       $table['rows'][] = $row;
     }
   }
@@ -87,11 +79,8 @@ function theme_ldap_servers_server($variables) {
   }
 
   if ($actions) {
-    $switch = ($ldap_server->status) ? 'disable' : 'enable';
-    $properties[] =  ' | ' . l(t('edit'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/edit/' . $sid) . ' | ' .
-        l(t('delete'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/delete/' . $sid) . ' | ' .
-        l(t('test'), LDAP_SERVERS_MENU_BASE_PATH . '/servers/test/' . $sid) . ' | ' .
-        l($switch, LDAP_SERVERS_MENU_BASE_PATH . '/servers/' . $switch . '/' . $sid) . ' | ';
+    $admin = new LdapServerAdmin($ldap_server->sid);
+    $properties = join(' | ', $admin->getLdapServerActions());
   }
 
   $output = theme_item_list(
