Updated module system.
TODO: Simplify it (like really!)