WIP for review

This has a bunch of ideas I'll document inline
Constraints are set via a setter object that eases IDE autocomplete and allows continued chaining.