1. A method comprising: storing a base application; storing a plurality of program modules associated with the base application, wherein the plurality of program modules comprises a first module and a second module; receiving user instructions to form a configuration file containing interaction rules, wherein the interaction rules define, for the base application, how the first module interacts with the second module to form a configured first module; and executing the base application and the configured first module on behalf of a user.