In general you are right, a module may just be a collection of functions. It stores no state and has no persistent processes. Or it can be something that maintains state in the form of one or more processes. This would normally be done with a gen_server, gen_fsm or gen_event depending on what you want to use it for
(Of course you can maintain state in mnesia/ets as well)