Rewrite around modular structure, add channel/nick completion