After some experimentation with loading shared libraries, I have decided to implement a module system into the IRCd. All of the commands will be loaded from modules, and it theory it will be possible for the server admin to enable/disable and remove/add commands at runtime.