Rethinking the API as I go.
First passing specs.