new API thinking, using WebSockets