Consume cancelation, client properties, lots o stuff

I can make a clean version of this if you don't want a cluttered change history.