anchor.diff:    WebSocket webSocket;
     bool _connected = false;
     int cookie;
  -  Map<String, dynamic> eventMap;
  +  Map<String, List<MessageCallback>> eventMap;
     var waiting_msgs = new Queue<String>();
   
     TarabishSocket(this.url) {
  
positive.code:       return;
      }
      if (message['type'] == "tables") {
        print ("Received tables message, parsing");
        for (var table in message['tables']) {
          var view = new TableView.from_json(table);
          print ("$view");
        }
  
      } else if (message['type'] != null) {
        var type = message['type'];
        print("Received message with type $type");
        print("Message: $message");
        // TODO: handle
      }
    }
  }
  
  
negative.code:   bool loggedin = false;
    String loginName = "Nobody";
  
    List<TableView> tableViews;
  
    Tarabish();
  
    // Lazy start socket on first login
    _setup_socket() {
      if (_tsocket == null) {
        _tsocket = new TarabishSocket("ws://localhost:42745/websocket");
        _tsocket.subscribe("valid_login", (e) => loginName = e);
        _tsocket.subscribe("tables", (e) => tableViews = e);
      }
    }
  
  