The user can define her own data structure for each module to maintain problem-specific data and any other information the user needs access to. A pointer to this data structure is maintained by SYMPHONY and is passed to the user as an argument to each user function. Since SYMPHONY knows nothing about this data structure, it is up to the user to allocate it, maintain it, and free it as required.