anchor.diff:        
         publishStream(_closeBtn.mouse$.map((e) => new CloseEvent(this)));
         
  -      globalEvent$.where((e) => e is Message).listen((m) {
  -        messages.add(m);
  -//        scrollToBottom();
  -        repaint();
  -      });
  +    });
  +    
  +    globalEvent$.where((e) => e is Message).listen((m) {
  +      messages.add(m);
  +      scrollToBottom();
  +      repaint();
       });
      
       enter$.listen((e) {
  
positive.code: //    lifeCycle$.where((e) => e is WillUnmountEvent);
      
      globalEvent$.where((e) => e is CloseEvent && e.toBeClosed == chatbox).listen((e) {
        shouldDisplayChatbox = false;
        repaint(); 
      });
    }
    User user;
    bool shouldDisplayChatbox  = true;
    List<ChatboxComponent> chatboxes = [];
    ChatboxComponent chatbox;
    
    @override
    ReactElement render() {
      return div(className: 'app', children: [
          nav(className:'navbar navbar-default', children: [
            div(className:'navbar-header', children: 
              a(className: 'navbar-brand', children: 'FakeBook')  
            ),
            div(className:'navbar-left navbar-text', children: [
              img(width:20, height:20, src:user.imageUrl),
              '$user',
              new Notification(user)            
            ]
            )
          ]),
          new FriendListComponent(user),
          shouldDisplayChatbox ? chatbox : null
      ]);
    }
  }
  
negative.code:     .listen((e) {
        _updateString(e.details['owner'], e.details['isTyping']);
      });
   }
    
    User owner;
  