diff --git a/barrier.go b/barrier.go
index 968f2c6..9f1a480 100644
--- a/barrier.go
+++ b/barrier.go
@@ -1,7 +1,7 @@
 package disruptor
 
 type Barrier interface {
-	Load() int64
+	LoadBarrier(int64) int64
 }
 
 func NewBarrier(upstream ...*Cursor) Barrier {
diff --git a/composite_barrier.go b/composite_barrier.go
index ef863f6..dbdd543 100644
--- a/composite_barrier.go
+++ b/composite_barrier.go
@@ -10,9 +10,8 @@
 	return &CompositeBarrier{cursors}
 }
 
-func (this *CompositeBarrier) Load() int64 {
+func (this *CompositeBarrier) LoadBarrier(current int64) int64 {
 	minimum := MaxSequenceValue
-
 	for _, item := range this.cursors {
 		sequence := item.Load()
 		if sequence < minimum {
diff --git a/cursor_386.go b/cursor_386.go
index 60db919..bd75fcf 100644
--- a/cursor_386.go
+++ b/cursor_386.go
@@ -8,3 +8,6 @@
 func (this *Cursor) Load() int64 {
 	return atomic.LoadInt64(&this.value)
 }
+func (this *Cursor) LoadBarrier(current int64) int64 {
+	return atomic.LoadInt64(&this.value)
+}
diff --git a/cursor_amd64.go b/cursor_amd64.go
index 0a40b3d..bc47f36 100644
--- a/cursor_amd64.go
+++ b/cursor_amd64.go
@@ -6,3 +6,6 @@
 func (this *Cursor) Load() int64 {
 	return this.value
 }
+func (this *Cursor) LoadBarrier(current int64) int64 {
+	return this.value
+}
diff --git a/cursor_arm.go b/cursor_arm.go
index 60db919..bd75fcf 100644
--- a/cursor_arm.go
+++ b/cursor_arm.go
@@ -8,3 +8,6 @@
 func (this *Cursor) Load() int64 {
 	return atomic.LoadInt64(&this.value)
 }
+func (this *Cursor) LoadBarrier(current int64) int64 {
+	return atomic.LoadInt64(&this.value)
+}
diff --git a/example/example_consumer.go b/example/example_consumer.go
index 4c9b55f..0579616 100644
--- a/example/example_consumer.go
+++ b/example/example_consumer.go
@@ -51,7 +51,7 @@
 			// 	} else if remaining == disruptor.Idling {
 			// 		fmt.Println("\t\t\t\t\t[CONSUMER] Consumer idling at sequence", sequence)
 			// 	}
-			// 	//time.Sleep(time.Millisecond * 10)
+			// 	time.Sleep(time.Millisecond * 10)
 		}
 	}
 }
diff --git a/example/example_producer.go b/example/example_producer.go
index 3607547..472bbab 100644
--- a/example/example_producer.go
+++ b/example/example_producer.go
@@ -1,20 +1,27 @@
 package main
 
-import "github.com/smartystreets/go-disruptor"
+import (
+	"fmt"
+	"time"
+
+	"github.com/smartystreets/go-disruptor"
+)
 
 func publish(id int, writer *disruptor.SharedWriter) {
 
-	// fmt.Printf("[PRODUCER %d] Starting producer...\n", id)
+	fmt.Printf("[PRODUCER %d] Starting producer...\n", id)
 
 	for {
+		// TODO: return lower, upper instead? or some kind of struct "Reservation"
+		// upon which commit can be invoked?
 		if sequence := writer.Reserve(id, ItemsToPublish); sequence != disruptor.Gating {
 			// fmt.Printf("[PRODUCER %d] Writing %d to slot %d\n", id, sequence, sequence)
 			ringBuffer[sequence&RingMask] = sequence
-			// fmt.Printf("[PRODUCER %d] Committing sequence %d\n", id, sequence)
-			writer.Commit(sequence)
-			// } else {
-			// 	// fmt.Println("[PRODUCER] Gating")
-			// 	//time.Sleep(time.Millisecond)
+			// fmt.Printf("[PRODUCER %d] Committing from sequence %d\n", id, sequence)
+			writer.Commit(sequence, sequence+ItemsToPublish-1)
+		} else {
+			// 	// fmt.Printf("[PRODUCER %d] Gating\n", id)
+			time.Sleep(time.Millisecond * 10)
 		}
 	}
 }
diff --git a/example/main.go b/example/main.go
index 7af8dea..bcbfb0a 100644
--- a/example/main.go
+++ b/example/main.go
@@ -11,8 +11,8 @@
 	MaxConsumerGroups    = 1
 	MaxProducers         = 2
 	ItemsToPublish       = 1
-	ReportingFrequency   = 10000 //1000000 * 10 // 1 million * N
-	RingSize             = 2
+	ReportingFrequency   = 1000000 * 10 // 1 million * N
+	RingSize             = 1024 * 16
 	RingMask             = RingSize - 1
 )
 
diff --git a/reader.go b/reader.go
index 006bfa4..1ea5ec6 100644
--- a/reader.go
+++ b/reader.go
@@ -23,7 +23,7 @@
 // instead of reading the cursor...
 func (this *Reader) Receive() (int64, int64) {
 	next := this.readerCursor.Load() + 1
-	ready := this.upstreamBarrier.Load()
+	ready := this.upstreamBarrier.LoadBarrier(next)
 	// fmt.Printf("\t\t\t\t\t[READER] Next: %d, Ready: %d\n", next, ready)
 
 	if next <= ready {
diff --git a/shared_writer.go b/shared_writer.go
index 0ffb9dc..0f909e6 100644
--- a/shared_writer.go
+++ b/shared_writer.go
@@ -34,7 +34,7 @@
 
 		if wrap > this.gate {
 			// fmt.Printf("[WRITER %d] Previous gate: %d\n", id, this.gate)
-			min := this.upstream.Load()
+			min := this.upstream.LoadBarrier(0)
 			if wrap > min {
 				// fmt.Printf("[WRITER %d] New gate (waiting for consumers): %d\n", id, min)
 				return Gating
@@ -54,6 +54,10 @@
 	}
 }
 
-func (this *SharedWriter) Commit(sequence int64) {
-	this.committed[sequence&this.mask] = int32(sequence >> this.shift)
+func (this *SharedWriter) Commit(lower, upper int64) {
+	// fmt.Printf("[PRODUCER] Committing Reservation. Lower: %d, Upper: %d\n", lower, upper)
+
+	for shift, mask := this.shift, this.mask; lower <= upper; lower++ {
+		this.committed[lower&mask] = int32(lower >> shift)
+	}
 }
diff --git a/shared_writer_barrier.go b/shared_writer_barrier.go
index d77910a..fb9c280 100644
--- a/shared_writer_barrier.go
+++ b/shared_writer_barrier.go
@@ -29,15 +29,19 @@
 	return buffer
 }
 
-func (this *SharedWriterBarrier) Load() int64 {
-
-	for sequence := this.reservation.Load(); sequence >= 0; sequence-- {
-		if this.committed[sequence&this.mask] == int32(sequence>>this.shift) {
-			// fmt.Printf("\t\t\t\t\t[SHARED-WRITER-BARRIER] Barrier Sequence: %d\n", sequence)
-			return sequence
+func (this *SharedWriterBarrier) LoadBarrier(lower int64) int64 {
+	shift, mask := this.shift, this.mask
+	upper := this.reservation.Load()
+	// fmt.Printf("\t\t\t\t\t[BARRIER] Next (lower): %d, Reservation (upper): %d\n", lower, upper)
+	// fmt.Println("\t\t\t\t\t[BARRIER] Committed:", this.committed)
+	for ; lower <= upper; lower++ {
+		// fmt.Printf("\t\t\t\t\t[BARRIER] Inside Loop. Index: %d, Value: %d\n", sequence&mask, sequence>>shift)
+		if this.committed[lower&mask] != int32(lower>>shift) {
+			// fmt.Println("\t\t\t\t\t[BARRIER] Upstream Barrier:", sequence-1, this.committed)
+			return lower - 1
 		}
 	}
 
-	// fmt.Printf("\t\t\t\t\t[SHARED-WRITER-BARRIER] Barrier Sequence: -1\n")
-	return InitialSequenceValue
+	// fmt.Println("\t\t\t\t\t[BARRIER] Upstream Barrier (default):", lower)
+	return upper
 }
diff --git a/writer.go b/writer.go
index b70e232..5c6e499 100644
--- a/writer.go
+++ b/writer.go
@@ -32,7 +32,7 @@
 	wrap := next - this.capacity
 
 	if wrap > this.gate {
-		min := this.readerBarrier.Load()
+		min := this.readerBarrier.LoadBarrier(0)
 		if wrap > min {
 			return Gating
 		}
