IRC Client class Identity : User maxNumOfServers // used for array declaration Server[] connect() { ... listen() ... } listen() // private, threaded disconnect() sendMsg( server, msgType, target, content ) / sendMsg( msgType, target, content ) join( server, channel ) / join( channel ) ... IRC Server struct Network // automatically assigned on connect Hostname Port Identity : User Channel[] User[] IRC User struct Nick Name Host IRC Channel struct Name Topic Modes Bans