diff --git a/TODO b/TODO
index df90ae2..fa5dfda 100644
--- a/TODO
+++ b/TODO
@@ -1,13 +1,8 @@
-- Wireup DSL
-
 - Rewrite all code test first (including diamond pattern)
 
 - Squeeze little bits of performance here and there by trying a few different things
 	e.g. pointers vs structs, padding, etc.
 
-- Cursors should probably all be created at the same time in wireup to keep them as close together as possible:
-  https://news.ycombinator.com/item?id=7800825
-
 - Integration suite that can exercise the Disruptor code on:
   1. Multiple Go runtime versions, e.g. (1.1, 1.2, 1.3, etc.) (plus point releases and the latest tip)
   2. Multiple CPU architectures: ARM, i386, AMD64
diff --git a/disruptor.go b/disruptor.go
new file mode 100644
index 0000000..df1f104
--- /dev/null
+++ b/disruptor.go
@@ -0,0 +1,28 @@
+package disruptor
+
+type Disruptor struct {
+	writer  *Writer
+	readers []*Reader
+}
+
+func NewDisruptor(builder Builder) Disruptor {
+	// TODO: Cursors should probably all be created at the same time in wireup to keep them as close together as possible:
+	// https://news.ycombinator.com/item?id=7800825
+	return Disruptor{}
+}
+
+func (this Disruptor) Writer() *Writer {
+	return this.writer
+}
+
+func (this Disruptor) Start() {
+	for _, item := range this.readers {
+		item.Start()
+	}
+}
+
+func (this Disruptor) Stop() {
+	for _, item := range this.readers {
+		item.Stop()
+	}
+}
diff --git a/shared_disruptor.go b/shared_disruptor.go
new file mode 100644
index 0000000..fc3b501
--- /dev/null
+++ b/shared_disruptor.go
@@ -0,0 +1,26 @@
+package disruptor
+
+type SharedDisruptor struct {
+	writer  *Writer
+	readers []*Reader
+}
+
+func NewSharedDisruptor(builder Builder) SharedDisruptor {
+	return SharedDisruptor{}
+}
+
+func (this SharedDisruptor) Writer() *Writer {
+	return this.writer
+}
+
+func (this SharedDisruptor) Start() {
+	for _, item := range this.readers {
+		item.Start()
+	}
+}
+
+func (this SharedDisruptor) Stop() {
+	for _, item := range this.readers {
+		item.Stop()
+	}
+}
diff --git a/wireup.go b/wireup.go
new file mode 100644
index 0000000..83a88b7
--- /dev/null
+++ b/wireup.go
@@ -0,0 +1,37 @@
+package disruptor
+
+type (
+	Wireup struct {
+		capacity int64
+		groups   [][]Consumer
+	}
+)
+
+func Configure(capacity int64, consumers ...Consumer) Wireup {
+	this := Wireup{
+		capacity: capacity,
+		groups:   [][]Consumer{},
+	}
+
+	return this.WithConsumerGroup(consumers...)
+}
+
+func (this Wireup) WithConsumerGroup(consumers ...Consumer) Wireup {
+	if len(consumers) == 0 {
+		return this
+	}
+
+	target := make([]Consumer, len(consumers))
+	copy(target, consumers)
+
+	this.groups = append(this.groups, target)
+	return this
+}
+
+func (this Wireup) Build() Disruptor {
+	return NewDisruptor(this)
+}
+
+func (this Wireup) BuildShared() SharedDisruptor {
+	return NewSharedDisruptor(this)
+}
