diff --git a/index.js b/index.js
index <HASH>..<HASH> 100644
--- a/index.js
+++ b/index.js
@@ -10,6 +10,16 @@
             return pSlice.call(args, slice);
         }
 
+        function keys(obj) {
+            var ret = [];
+            for (var i in obj) {
+                if (obj.hasOwnProperty(i)) {
+                    ret.push(i);
+                }
+            }
+            return ret;
+        }
+
         //taken from node js assert.js
         //https://github.com/joyent/node/blob/master/lib/assert.js
         function deepEqual(actual, expected) {
@@ -47,6 +57,8 @@
 
                 // 7.4. Other pairs that do not both pass typeof value == 'object',
                 // equivalence is determined by ==.
+            } else if (isString(actual) && isString(expected) && actual !== expected) {
+                return false;
             } else if (typeof actual !== 'object' && typeof expected !== 'object') {
                 return actual === expected;
 
@@ -82,8 +94,8 @@
                 return deepEqual(a, b);
             }
             try {
-                var ka = Object.keys(a),
-                    kb = Object.keys(b),
+                var ka = keys(a),
+                    kb = keys(b),
                     i;
                 // having the same number of owned properties (keys incorporates
                 // hasOwnProperty)
Removed use of Object.keys in deepEqual