implemented timeouts, ws reconnect, and general cleanup
only log errors in long-form during DEBUG