3 layers of readers.
diff --git a/example/main.go b/example/main.go
index e58e3ba..4c0a54f 100644
--- a/example/main.go
+++ b/example/main.go
@@ -9,7 +9,7 @@
 const MaxConsumers = 1
 
 func main() {
-	runtime.GOMAXPROCS(MaxConsumers + 2)
+	runtime.GOMAXPROCS(MaxConsumers + 3)
 
 	writerCursor := disruptor.NewCursor()
 	writerBarrier := disruptor.NewBarrier(writerCursor)
@@ -20,7 +20,10 @@
 	readerCursors2 := startReaders(readerBarrier1, writerCursor)
 	readerBarrier2 := disruptor.NewBarrier(readerCursors2...)
 
-	writer := disruptor.NewWriter(writerCursor, RingSize, readerBarrier2)
+	readerCursors3 := startReaders(readerBarrier2, writerCursor)
+	readerBarrier3 := disruptor.NewBarrier(readerCursors3...)
+
+	writer := disruptor.NewWriter(writerCursor, RingSize, readerBarrier3)
 	publish(writer)
 }
 func startReaders(upstreamBarrier disruptor.Barrier, writerCursor *disruptor.Cursor) (readerCursors []*disruptor.Cursor) {