An agent which carries out some task for a user and, in doing so, visits a number of computers in a network. It achieves this by its code being copied to a remote computer and then executed. For example, a mobile agent might be used by someone who wants to order a series of books on a particular subject and yet wants to make sure that his or her cost is minimized in terms of the purchase price of the books and the shipping rates charged by the online bookshops. One of the major advantages of mobile agent technology is that it can minimize the communication time that might normally be involved in such a search. A mobile agent does not have to communicate with the user while carrying out the search: the only time that any bandwidth is used is when the agent returns from the search and issues its results.