added websockets for realtime feedback