Great read. It's too bad modules are pretty much an afterthought in most langs.
I really like research language 1ML's approach to modules[0]. This allows monomorphic types to be treated like values, avoiding all of OCaml's module syntax (which can be a bit complex and verbose).