constraints (referenced earlier) or usually a combination of both. This can mean that certain tasks such as floating-point calculations and 2D or 3D graphics may run faster on a particular device and in general it can be stated that software design rather than hardware capability is usually the dominant performance differentiator. A processor rated at 1 GHz will not necessarily be run at 1 GHz. Code bandwidth has increased in parallel with processor and memory bandwidth. In '3G Handset and Network Design' (page 122) we had a table showing how code band- width had increased between 1985 and 2002 from 000 lines of code to one million lines of code that implied that code bandwidth had increased by an order of magnitude every eight years. Today (nine years later) an Android operating system in a smart phone consists of 12 million lines of code including 3 million lines of XML, 2.8 million lines of C, 2.1 million lines of Java and 1.75 million lines of C++, suggesting that the rule still more or less applies. 5 http://www.eembc.org/home.php. Making Telecoms Work The impact of this code bandwidth expansion on income and costs is still unclear. Almost inevitably more software complexity implies more software faults, but additionally the Android applications store is open to any developer. This means that a handset vendor cannot test applications supplied by third parties in terms of their quality and efficiency either in terms of user experience or consumption of processor and memory bandwidth. This can result and has resulted in an increase in product returns on the basis of poor performance, a source of frustration for a handset vendor who has had no direct income from the supply of the application but is having to absorb an associated product support cost. There may be a rule in which an increase in processor bandwidth, memory bandwidth, code bandwidth and application bandwidth can be related to an increase in offered traffic volume and value but the effect is composite. To say that an order of magnitude increase in 