add streaming API