anchor.diff:      });
   
       /* Handles User Tracking in Channels when a user joins. A user is a member until it is changed. */
  -    register((JoinEvent event) => event.channel.members.add(getUser(event.user)));
  +    register((JoinEvent event) {
  +      if (getUser(event.user) == null) {
  +        this.users.add(new User(this, event.user));
  +      }
  +      event.channel.members.add(getUser(event.user));
  +    });
   
       // Handles User Tracking in Channels when a user leaves
       register((PartEvent event) {
         var channel = event.channel;
  -      channel.members.remove(event.user);
  -      channel.voices.remove(event.user);
  -      channel.ops.remove(event.user);
  -      channel.owners.remove(event.user);
  -      channel.halfops.remove(event.user);
  +      var user = getUser(event.user);
  +      channel.members.remove(user);
  +      channel.voices.remove(user);
  +      channel.ops.remove(user);
  +      channel.owners.remove(user);
  +      channel.halfops.remove(user);
       });
   
       // Handles User Tracking in Channels when a user is kicked.
       register((KickEvent event) {
         var channel = event.channel;
  -      channel.members.remove(event.user);
  -      channel.voices.remove(event.user);
  -      channel.ops.remove(event.user);
  -      channel.owners.remove(event.user);
  -      channel.halfops.remove(event.user);
  +      var user = getUser(event.user);
  +      channel.members.remove(user);
  +      channel.voices.remove(user);
  +      channel.ops.remove(user);
  +      channel.owners.remove(user);
  +      channel.halfops.remove(user);
         if (event.user == nickname) {
           channels.remove(channel);
         }
  
positive.code: 
      // Handles Nickname Changes
      register((NickChangeEvent event) {
        if (event.original == _nickname) {
          _nickname = event.now;
        } else {
          for (Channel channel in channels) {
            void m(Set<String> list) {
              if (list.contains(event.original)) {
                list.remove(event.original);
                list.add(event.now);
  
negative.code:           m(channel.halfops);
            m(channel.owners);
          }
        }*/
      });
  
      // Handles Channel User Tracking
  