improve specs, work on error handling

I think this is a lie. This needs a bit more investigation and we can probably do it while we think about error handling.