Using simplified wireup.
diff --git a/example/main.go b/example/main.go
index d375917..53f6ad9 100644
--- a/example/main.go
+++ b/example/main.go
@@ -9,72 +9,52 @@
 )
 
 const (
-	BufferSize = 1024 * 64
-	BufferMask = BufferSize - 1
-	Iterations = 1000000 * 100
+	BufferSize   = 1024 * 64
+	BufferMask   = BufferSize - 1
+	Iterations   = 1000000 * 100
+	Reservations = 1
 )
 
-var ringBuffer = [BufferSize]int64{}
+var ring = [BufferSize]int64{}
 
 func main() {
 	runtime.GOMAXPROCS(2)
 
-	written, read := disruptor.NewCursor(), disruptor.NewCursor()
-	reader := disruptor.NewReader(read, written, written, SampleConsumer{})
+	controller := disruptor.Configure(BufferSize, SampleConsumer{}).Build()
+	controller.Start()
 
 	started := time.Now()
-	reader.Start()
-	publish(written, read)
-	reader.Stop()
+	publish(controller.Writer())
 	finished := time.Now()
+
+	controller.Stop()
 	fmt.Println(Iterations, finished.Sub(started))
 }
 
-const Reservations = 1
-
-func publish(written *disruptor.Cursor, upstream disruptor.Barrier) {
+func publish(writer *disruptor.Writer) {
 	sequence := disruptor.InitialSequenceValue
-	writer := disruptor.NewWriter(written, upstream, BufferSize)
 	for sequence <= Iterations {
-		sequence += Reservations
-		writer.Await(sequence)
-		ringBuffer[sequence&BufferMask] = sequence
+		sequence = writer.Reserve(Reservations)
+		ring[sequence&BufferMask] = sequence
 		writer.Commit(sequence, sequence)
 	}
 }
 
-// func publish(written *disruptor.Cursor, upstream disruptor.Barrier) {
+// func publish(writer *disruptor.Writer) {
 // 	sequence := disruptor.InitialSequenceValue
-// 	writer := disruptor.NewWriter(written, upstream, BufferSize)
 // 	for sequence <= Iterations {
-// 		sequence = writer.Reserve(Reservations)
-// 		ringBuffer[sequence&BufferMask] = sequence
+// 		sequence += Reservations
+// 		writer.Await(sequence)
+// 		ring[sequence&BufferMask] = sequence
 // 		writer.Commit(sequence, sequence)
 // 	}
 // }
 
-// func publish(written *disruptor.Cursor, upstream disruptor.Barrier) {
-// 	previous := disruptor.InitialSequenceValue
-// 	gate := disruptor.InitialSequenceValue
-
-// 	for previous <= Iterations {
-// 		next := previous + 1
-
-// 		for next-BufferSize > gate {
-// 			gate = upstream.Read(next)
-// 		}
-
-// 		ringBuffer[next&BufferMask] = next
-// 		written.Store(next)
-// 		previous = next
-// 	}
-// }
-
 type SampleConsumer struct{}
 
 func (this SampleConsumer) Consume(lower, upper int64) {
 	for lower <= upper {
-		message := ringBuffer[lower&BufferMask]
+		message := ring[lower&BufferMask]
 		if message != lower {
 			fmt.Println("Race condition", message, lower)
 			panic("Race condition")