another attempt at a definition of modules