-error reporting system (one exists with hashie but it sucked and no one checked it)
-[X] dynamic question/answers (simple maths e.g. n+7=randomnumber(4-9), what day of the week was it yesterday)
-[X] twitter notifications of new rounds
-[X] multiple answers (how can you cook an egg? boil|fry|poach|scramble)
-list aggregation (able to change different question lists currently in use. i.e. tv/movies/music/general/etc categories)
+- better config... or better yet just move non-DB-related config into the database
+ - needs a better format if its used for generic module data; particularly because /\s#/ starts a comment instead of naming a channel
+ - needs to retain comments when config file is saved
+
+- a module for administering channel users (copy from admin_user) and adding/removing channels
+
+- modlib function for parsing option arguments (like !MODLOAD has now)
+
+- modlib 'onload' hook so modules can easily do stuff on loading
+ (if this exists use it to replace _key() in steam.py)
+
+- modlib 'need_config' function to tell the modlib you refuse to start without
+ a config value being specified
+
+- add new hook types
+ - 'regexhook' for watching messages matching a regex
+ (should this be supported in core or
+ just by modlib translating into a numhook('PRIVMSG')?)
+ - 'msghook' for watching all messages (like numhook('PRIVMSG') but
+ you don't have to handle parsing)
+ - add a way to specify a config value as a hook parameter without needing
+ parent (i.e. delayed resolution)
+
+- weather module using accuweather API, forecasts
+
+- fix softdeps, if they're used through lib.mod() or parent.module() they break, need a `'mod' in modules` check somewhere
+
+- ctlmod.unload: track what modules are unloaded and return that info to caller
+
+- lookup User object by auth
+ modules should be able to (attempt to) look up a User object by auth, that way if the user is online
+ !clevel and !glevel can look up their existing object and adjust the permissions there
+
+- sockets module: wrapping should operate on byte-level not string-level
+ sentences with unicode text get wrapped wrong
+ ... but the wrapping point needs to be determined at the string-level ugh