Another simplification to the interface defined in module.h: there is no need for is_singleton to be a function pointer, now it's just a boolean.