Modules encapsulates functions and/or procedures and data, quite like objects does. So why modules are so usefull. The main reason to have modules is to hide some functions and procedures to reduce the risk of name conflict, at least it is the way I tend to see it. But objects can play this role too, no?