3.75ns/op by requiring single writer to track their own sequence number.
diff --git a/example/main.go b/example/main.go
index 0fea047..3c97749 100644
--- a/example/main.go
+++ b/example/main.go
@@ -38,12 +38,8 @@
 	sequence := disruptor.InitialSequenceValue
 	writer := disruptor.NewWriter(written, upstream, BufferSize)
 	for sequence <= Iterations {
-		sequence = writer.Reserve(Reservations)
-
-		// for i := sequence + ReservationMask; i <= sequence; i++ {
-		// 	ringBuffer[i&BufferMask] = i
-		// }
-
+		sequence += Reservations
+		writer.Reserve(sequence)
 		ringBuffer[sequence&BufferMask] = sequence
 		writer.Commit(sequence)
 	}
diff --git a/writer.go b/writer.go
index da41bb2..4ed7dae 100644
--- a/writer.go
+++ b/writer.go
@@ -27,13 +27,10 @@
 	}
 }
 
-func (this *Writer) Reserve(count int64) int64 {
-	this.previous = this.previous + count
-	for this.previous-this.capacity > this.gate {
+func (this *Writer) Reserve(next int64) {
+	for next-this.capacity > this.gate {
 		this.gate = this.upstream.Read(0)
 	}
-
-	return this.previous
 }
 
 func (this *Writer) Commit(sequence int64) {
diff --git a/writer_test.go b/writer_test.go
index 0a2b278..bc0d8dc 100644
--- a/writer_test.go
+++ b/writer_test.go
@@ -11,7 +11,7 @@
 	b.ResetTimer()
 
 	for i := int64(0); i < iterations; i++ {
-		writer.Reserve(1)
+		writer.Reserve(i)
 		read.sequence = i
 	}
 }