Streaming api

Before you can send this upstream you'll have to change it back to `psmithuk`. You should `ag sean-duffy` in the top level to make sure you caught them all.