diff --git a/set.go b/set.go
index 7ca6ca3..0bb8d7c 100644
--- a/set.go
+++ b/set.go
@@ -141,6 +141,9 @@
 	// Remove a single element from the set.
 	Remove(i interface{})
 
+	// RemoveAll removes multiple elements from the set.
+	RemoveAll(i ...interface{})
+
 	// Provides a convenient string representation
 	// of the current state of the set.
 	String() string
diff --git a/set_test.go b/set_test.go
index 6cdf583..ae242a6 100644
--- a/set_test.go
+++ b/set_test.go
@@ -131,6 +131,26 @@
 	}
 }
 
+func Test_RemoveAllSet(t *testing.T) {
+	a := makeSet([]int{6, 3, 1, 8, 9})
+
+	a.RemoveAll(3, 1)
+
+	if a.Cardinality() != 3 {
+		t.Error("RemoveAll should only have 2 items in the set")
+	}
+
+	if !a.Contains(6, 8, 9) {
+		t.Error("RemoveAll should have only items (6,8,9) in the set")
+	}
+
+	a.RemoveAll(6, 8, 9)
+
+	if a.Cardinality() != 0 {
+		t.Error("RemoveSet should be an empty set after removing 6 and 1")
+	}
+}
+
 func Test_RemoveUnsafeSet(t *testing.T) {
 	a := makeUnsafeSet([]int{6, 3, 1})
 
@@ -152,6 +172,26 @@
 	}
 }
 
+func Test_RemoveAllUnsafeSet(t *testing.T) {
+	a := makeUnsafeSet([]int{6, 3, 1, 8, 9})
+
+	a.RemoveAll(3, 1)
+
+	if a.Cardinality() != 3 {
+		t.Error("RemoveAll should only have 2 items in the set")
+	}
+
+	if !a.Contains(6, 8, 9) {
+		t.Error("RemoveAll should have only items (6,8,9) in the set")
+	}
+
+	a.RemoveAll(6, 8, 9)
+
+	if a.Cardinality() != 0 {
+		t.Error("RemoveSet should be an empty set after removing 6 and 1")
+	}
+}
+
 func Test_ContainsSet(t *testing.T) {
 	a := NewSet()
 
diff --git a/threadsafe.go b/threadsafe.go
index 8ef31f6..04bf181 100644
--- a/threadsafe.go
+++ b/threadsafe.go
@@ -149,6 +149,12 @@
 	set.Unlock()
 }
 
+func (set *threadSafeSet) RemoveAll(i ...interface{}) {
+	set.Lock()
+	set.s.RemoveAll(i...)
+	set.Unlock()
+}
+
 func (set *threadSafeSet) Cardinality() int {
 	set.RLock()
 	defer set.RUnlock()
diff --git a/threadunsafe.go b/threadunsafe.go
index 4d4e69f..2cd1f98 100644
--- a/threadunsafe.go
+++ b/threadunsafe.go
@@ -163,6 +163,12 @@
 	delete(*set, i)
 }
 
+func (set *threadUnsafeSet) RemoveAll(i ...interface{}) {
+	for _, elem := range i {
+		delete(*set, elem)
+	}
+}
+
 func (set *threadUnsafeSet) Cardinality() int {
 	return len(*set)
 }
