Implements a lot of stuff. Most chat handling needs to be undone to allow for correct channeling though.