Brand new fluent API.
Rewrote to use new interface; passing all current tests.
Cleaned up tests.