var ImmutableObject = function makeImmutable(obj, isExtensible) {
  "use strict";

  var mutable = obj;
  var immutable = {};

function addItem(addTo, item, val) {

  Object.defineProperty(addTo, item, {

    enumerable: true,
    writeable: false,
    value: val

  });

}

  for (var item in mutable) {

    addItem(immutable, item, mutable[item]);

  }

  if (!isExtensible) {

    Object.preventExtensions(immutable);

  }

  return {

    get: function() {

      var returned = Object.preventExtensions(Object.create(immutable));
      //make a copy so can't direct edit with object.property = X
      //must use .set()

      return returned;

    },

    set: function(item, val) {

      addItem(immutable, item, val);

    }

  };

};

@@ -274,37 +274,59 @@
 %0A%0A  
-for (var item in mutable) %7B%0A%0A
+Object.keys(mutable).forEach(function(item) %7B%0A%0A    
     
@@ -366,24 +366,26 @@
 item%5D);%0A%0A  %7D
+);
 %0A%0A  if (!isE

change from for in to object.keys