first version
WIP: add websocket