g. Trying with limited traffic amounts, and limited user groups, to mature the service is important. Therefore, it is important to enable IPv6 while there is still time to fix errors. Leaving the transition to a time when the operator has to transition, will just make the transition more painful. As we described in Section 5.5.6, the operator is both impacted by its own transition, and also by the transition of other operators. The impact of not being prepared can have unexpected consequences for the operator, for instance when the roaming partners transition. We hope that we have made it clear that while the transition to IPv6 is difficult, and potentially expensive, the cost of not transitioning is even higher. Transitioning to IPv6 The previous sections explained the different transition mechanisms, the transition scenarios in 3GPP environment, and finally the impacts of IPv6 transition. This section tries to give an overview of how to prepare, and execute transition to IPv6 in the 3GPP Deploying IPv6 in 3GPP Networks environment. We are fully aware that every network is different, and therefore it is neither possible nor even desirable to try to provide a detailed, universal transition plan. 5.6.1 Application Developer's Transition Plan As the transition to IPv6 is pervasive at all layers of network protocols, the application developers also need to be sufficiently aware of IPv6. We explained in Section 5.4.4 that many operating systems provide IP version agnostic APIs. At the minimum, the developers have to use these. In addition, application developers have to make sure that the data structures that handle IP addresses are capable of storing both IPv4 and IPv6 addresses. For a small class of applications this is a major task. Applications may handle IP addresses at different levels. Clearly, an application may encounter IPv6 addresses when opening a connection, for instance, as a result of a DNS query. However, there are also other circumstances where an application may encounter IPv6 addresses. For instanc