Need to be able to say what you need, and the computer / compiler works out the functions needed to be used to achieve that from what you already have. Perhaps there can be a `cost' associated with each function, which the compiler uses to choose appropriate networks. E.g. need: imap spool directory of user have: user name, partition name Vs need: imap spool directory of user have: user name The latter must do a (costly) database lookup to find the partition name.