diff --git a/specs/Bag.spec.php b/specs/Bag.spec.php
index <HASH>..<HASH> 100644
--- a/specs/Bag.spec.php
+++ b/specs/Bag.spec.php
@@ -20,6 +20,11 @@ describe("Bag", function() {
 		expect( (array) $b )->to->equal(array());
 	});
 
+	it("can unset non-existing elements", function() {
+		$b = new Bag();
+		unset($b['foo']);
+	});
+
 	beforeEach(function(){
 		$this->bag = new Bag( array('x'=>42) );
 	});
diff --git a/src/Bag.php b/src/Bag.php
index <HASH>..<HASH> 100644
--- a/src/Bag.php
+++ b/src/Bag.php
@@ -28,6 +28,11 @@ class Bag extends \ArrayObject {
 		return $this->offsetExists($key) ? $this[$key] : $this[$key] = $default;
 	}
 
+	/* Allow unset of non-existing offset */
+	function offsetUnset($name) {
+		return $this->offsetExists($name) ? parent::offsetUnset($name) : null;
+	}
+
 	/* Update multiple argument values using an array (like Python .update())*/
 	function set($data) {
 		# Use a loop to retain overall key order
Allow bags to unset non-existing offsets