Computer based optimization of water distribution networks is not yet standard engineering practice. The major reason for this is the inability of most optimization techniques to deal with the difficulties encountered when optimizing complex, real-life networks. In this paper an "exhaustive enumeration" technique for the optimization of pipe networks is presented. The flexibility of the technique, and how it deals with realistic constraints in pipe network design, are discussed. One of the features of the technique is that it can be used not only to produce a single optimum solution, but also a list of other non-inferior, or Pareto optimal solutions. The concept of Pareto optimality, and its use as a powerful planning tool, is explained by means of an example. A tank sizing technique can also easily be incorporated into the optimization procedure, and the same example is used to illustrate that the tank sizing and pipe sizing problems are interrelated, due to the trade-off which exists between pipe cost and storage cost.