to call another program. As for the version thing, the (imho) easiest way would be to store the actual version number of each "other program" somewhere on disk and read that info upon each request. Store the programs in a "version_number/program" structure and construct the call path accordingly.