- The consumer code needs a much cleaner abstraction
    In the end, it's two-phase, e.g. receive message, ack message, perhaps we make this a
    first-class citizen in the API on the consumer side where the consumer calls:
    Receive() and gets the sequence of the message in question (or a specific value for
    gating/idling?) and then calls Ack/Confirm etc with the message sequence?

- Wireup DSL
- Rewrite all code test first (including diamond pattern)
- Benchmark code (go test -bench=.) (with GOMAXPROCS=2 if env GOMAXPROCS=1)
- Squeeze little bits of performance here and there by trying a few different things
	e.g. pointers vs structs, padding, etc.
- Investigate ways to utilize an int32 under the hood but have it be exposed as an int64?
   e.g. utilizing two int32s? This would allow us to remove the atomic statements surrounding
   i386 and ARM architecutes, but may be more effort than it's worth for our particular
   use case...
- Understand why "slower" consumer code is faster and more consistent when performing single-item
	publishes

- I need to get some help doing some low-level profiling the application to find out where
  the bottlenecks are and determining how the Go scheduler is hindering performance, if at all.

- More assertive tests on CPU ordering, e.g. claim a slot which has multiple values
  perform a computation on the sequence in some deterministic way and store each computation
  as one of the values. Then on the reader side assert that the struct values are correct
  for that given sequence.

- 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
  3. Multiple operation systems: Linux, OSX, Windows, etc.
  Ideally each of the above combinations would be an individual exercise

- contributors
- license
- readme (Github markdown?)

- Website with cool images and documentation? (e.g. GoConvey)