Refactor mod list

Includes #495 but has been rebased onto master. 
I'm actually thinking we should remove this entirely; it's a big chunk of dead code, and through the power of git we can always get it back.