Is it an Agent, or Just a Program?: A Taxonomy for Autonomous Agents