switch from raw WebSocket to bullet
add aria-* states