diff --git a/includes/export.inc b/includes/export.inc
index 83cdb6d..89a6315 100644
--- a/includes/export.inc
+++ b/includes/export.inc
@@ -146,13 +146,13 @@ function ctools_export_load_object($table, $type = 'all', $args = array()) {
     $object->type = t('Normal');
     $object->export_type = EXPORT_IN_DATABASE;
     // Determine if default object is enabled or disabled.
-    if (isset($status[$object->{$export['key']}])) {
-      $object->disabled = $status[$object->{$export['key']}];
+    if (isset($status[ctools_export_key($object,$export['key'])])) {
+      $object->disabled = $status[ctools_export_key($object,$export['key'])];
     }
 
-    $cache[$table][$object->{$export['key']}] = $object;
+    $cache[$table][ctools_export_key($object,$export['key'])] = $object;
     if ($type == 'conditions') {
-      $return[$object->{$export['key']}] = $object;
+      $return[ctools_export_key($object,$export['key'])] = $object;
     }
   }
 
@@ -170,21 +170,21 @@ function ctools_export_load_object($table, $type = 'all', $args = array()) {
         }
       }
       else if ($type == 'names') {
-        if (!in_array($object->{$export['key']}, $args)) {
+        if (!in_array(ctools_export_key($object,$export['key']), $args)) {
           continue;
         }
       }
 
       // Determine if default object is enabled or disabled.
-      if (isset($status[$object->{$export['key']}])) {
-        $object->disabled = $status[$object->{$export['key']}];
+      if (isset($status[ctools_export_key($object,$export['key'])])) {
+        $object->disabled = $status[ctools_export_key($object,$export['key'])];
       }
 
-      if (!empty($cache[$table][$object->{$export['key']}])) {
-        $cache[$table][$object->{$export['key']}]->type = t('Overridden');
-        $cache[$table][$object->{$export['key']}]->export_type |= EXPORT_IN_CODE;
+      if (!empty($cache[$table][ctools_export_key($object,$export['key'])])) {
+        $cache[$table][ctools_export_key($object,$export['key'])]->type = t('Overridden');
+        $cache[$table][ctools_export_key($object,$export['key'])]->export_type |= EXPORT_IN_CODE;
         if ($type == 'conditions') {
-          $return[$object->{$export['key']}] = $cache[$table][$object->{$export['key']}];
+          $return[ctools_export_key($object,$export['key'])] = $cache[$table][ctools_export_key($object,$export['key'])];
         }
       }
       else {
@@ -193,9 +193,9 @@ function ctools_export_load_object($table, $type = 'all', $args = array()) {
         $object->in_code_only = TRUE;
         $object->table = $table;
 
-        $cache[$table][$object->{$export['key']}] = $object;
+        $cache[$table][ctools_export_key($object,$export['key'])] = $object;
         if ($type == 'conditions') {
-          $return[$object->{$export['key']}] = $object;
+          $return[ctools_export_key($object,$export['key'])] = $object;
         }
       }
     }
@@ -268,8 +268,8 @@ function ctools_get_default_object($table, $name) {
   $object = $defaults[$name];
 
   // Determine if default object is enabled or disabled.
-  if (isset($status[$object->{$export['key']}])) {
-    $object->disabled = $status[$object->{$export['key']}];
+  if (isset($status[ctools_export_key($object,$export['key'])])) {
+    $object->disabled = $status[ctools_export_key($object,$export['key'])];
   }
 
   $object->type = t('Default');
@@ -549,10 +549,10 @@ function ctools_export_set_object_status($object, $new_status = TRUE) {
 
   // Compare
   if (!$new_status && $object->export_type & EXPORT_IN_DATABASE) {
-    unset($status[$object->{$export['key']}]);
+    unset($status[ctools_export_key($object,$export['key'])]);
   }
   else {
-    $status[$object->{$export['key']}] = $new_status;
+    $status[ctools_export_key($object,$export['key'])] = $new_status;
   }
 
   variable_set($schema['export']['status'], $status);
@@ -657,3 +657,25 @@ function ctools_export_to_hook_code(&$code, $table, $names = array(), $name = 'f
     }
   }
 }
+
+/**
+ * generates a key from a scheme[export][key]
+ *
+ * PARAM object: a ctool object
+ * PARAM key : a string or an array relating to the objects properties
+ * RETURN : a string of the $object->$key of if key is an array $object->$key1__$object->$key2...
+ */
+function ctools_export_key($object,$key) {
+  if (is_array($key) ){
+    $key_values = array();
+    foreach($key as $key_item) {
+      $key_values[] = $object->{$key_item};
+    }
+    $key = implode('__', $key_values);
+  }
+  else {
+   $key = $object->{$key};
+  }
+  return $key;
+}
+
diff --git a/includes/export.inc~ b/includes/export.inc~
index e1d051f..d494e1b 100644
--- a/includes/export.inc~
+++ b/includes/export.inc~
@@ -669,7 +669,5 @@ function ctools_export_key($object,$key) {
    $key = $object->{$key};
   }
   return $key;
-
-
 }
 
