diff --git a/features.export.inc b/features.export.inc
index 93d36a3..215c2f2 100644
--- a/features.export.inc
+++ b/features.export.inc
@@ -447,7 +447,20 @@ function features_tar_create($name, $contents) {
  */
 function features_var_export($var, $prefix = '', $init = TRUE) {
   if (is_object($var)) {
-    $output = method_exists($var, 'export') ? $var->export() : features_var_export((array) $var);
+    if (method_exists($var, 'export')) {
+      $output = $var->export();
+    }
+    elseif (get_class($var) === 'stdClass') {
+      $output = '(object) ' . features_var_export((array) $var, $prefix);
+    }
+    elseif (!method_exists($var, '__set_state')) {
+      // Ugly, but custom object with no clue how to export.without
+      // __set_state class and var_export produces unusable code.
+      $output = 'unserialize(' . var_export(serialize($var), TRUE) . ')';
+    }
+    else {
+      $output = var_export($var, TRUE);
+    }
   }
   else if (is_array($var)) {
     if (empty($var)) {
