This paper describes how the Erlang programming language could be extended with parameterized modules, in a way that is compatible with existing code. This provides a powerful way of creating callbacks, that avoids the limitations involved with function closures, and extends current programming practices in a systematic way that also eliminates a common source of errors. The usage of parameterized modules is similar to Object-Oriented programming, and is naturally complemented by the currently underused feature of behaviours (interface declarations), which are also explained in detail.