diff --git a/barrier.go b/barrier.go
index 3e7cd94..5810851 100644
--- a/barrier.go
+++ b/barrier.go
@@ -4,31 +4,12 @@
 	Load() int64
 }
 
-type MultiBarrier struct {
-	cursors []*Cursor
-}
-
-func (this *MultiBarrier) Load() int64 {
-	minimum := MaxSequenceValue
-
-	for _, item := range this.cursors {
-		cursor := item.Load()
-		if cursor < minimum {
-			minimum = cursor
-		}
-	}
-
-	return minimum
-}
-
 func NewBarrier(upstream ...*Cursor) Barrier {
 	if len(upstream) == 0 {
 		panic("At least one upstream cursor is required.")
 	} else if len(upstream) == 1 {
 		return upstream[0]
 	} else {
-		cursors := make([]*Cursor, len(upstream))
-		copy(cursors, upstream)
-		return &MultiBarrier{cursors}
+		return NewCompositeBarrier(upstream)
 	}
 }
diff --git a/composite_barrier.go b/composite_barrier.go
new file mode 100644
index 0000000..67baf10
--- /dev/null
+++ b/composite_barrier.go
@@ -0,0 +1,24 @@
+package disruptor
+
+type CompositeBarrier struct {
+	cursors []*Cursor
+}
+
+func NewCompositeBarrier(upstream []*Cursor) *CompositeBarrier {
+	cursors := make([]*Cursor, len(upstream))
+	copy(cursors, upstream)
+	return &CompositeBarrier{cursors}
+}
+
+func (this *CompositeBarrier) Load() int64 {
+	minimum := MaxSequenceValue
+
+	for _, item := range this.cursors {
+		cursor := item.Load()
+		if cursor < minimum {
+			minimum = cursor
+		}
+	}
+
+	return minimum
+}
