diff --git a/include/zipr_mem_space.h b/include/zipr_mem_space.h
index 8706d63eb6421702738f74ebafae535cd852c202..b2afae9d8a1ff237350e8e58bb840e77d708e6a0 100644
--- a/include/zipr_mem_space.h
+++ b/include/zipr_mem_space.h
@@ -43,6 +43,7 @@ class ZiprMemorySpace_t : public MemorySpace_t
 
 		// range operatations
 		void SplitFreeRange(RangeAddress_t addr);
+		void SplitFreeRange(Range_t split_from);
 		void MergeFreeRange(RangeAddress_t addr);
 		RangeSet_t::iterator FindFreeRange(RangeAddress_t addr);
 		Range_t GetFreeRange(int size);
diff --git a/src/memory_space.cpp b/src/memory_space.cpp
index f8ed44678ffc455e2b24ac66417a44955f309514..79807e81e40c61851f75c56f72f2ac1bbc4f610c 100644
--- a/src/memory_space.cpp
+++ b/src/memory_space.cpp
@@ -36,6 +36,17 @@ ZiprOptionsNamespace_t *ZiprMemorySpace_t::RegisterOptions(ZiprOptionsNamespace_
 	return NULL;
 }
 
+void ZiprMemorySpace_t::SplitFreeRange(Range_t split_from)
+{
+	RangeAddress_t counter, end;
+	for (counter = split_from.GetStart(), end = split_from.GetEnd();
+	     counter!=end;
+			 counter++)
+	{
+		SplitFreeRange(counter);
+	}
+}
+
 void ZiprMemorySpace_t::SplitFreeRange(RangeAddress_t addr)
 {
 	RangeSet_t::iterator it=FindFreeRange(addr);