Feature creep is the excessive ongoing expansion or addition of new features in a product, especially in computer software, video games and consumer and business electronics. These extra features go beyond the basic function of the product and can result in software bloat and over-complication, rather than simple design. The definition of what qualifies as "feature creep" does vary among end users, where what is perceived as such by some users may be considered practical functionality by others. Causes A cause of feature creep is the desire to provide the consumer with a more useful or desirable product, in order to increase sales or distribution. However, once the product reaches the point at which it does everything that it is designed to do, the manufacturer is left with the choice between adding functions some users might consider unneeded (sometimes at the cost of efficiency), and sticking with the old version (at the cost of a perceived lack of improvement). Another major cause of feature creep might be a compromise from a committee which decides to implement multiple, different viewpoints or use cases in the same product, even for opportunistic reasons. Then, as more features are added to support each approach, it might be necessary to have cross-conversion features between the multiple paradigms, further complicating the total features. Characteristics Feature creep is one of the most common sources of cost and schedule overruns. It thus endangers and can even kill products and projects. Control There are several methods to control feature creep, including: strict limits for allowable features, multiple variations, and pruning excess features. Separation Temptation of later feature creep may be avoided to some degree by basing initial design on strong software fundamentals, such as logical separation of functionality and data access, e.g. using submenus which are optionally accessible by power users who desire more functionality and a higher verbosity of information. It can be actively controlled with rigorous change management and by delaying changes to later delivery phases of a project. Variations and options Another method of controlling feature creep is to maintain multiple variations of products, where features are kept limited and reduced in the more basic variations, e.g. Microsoft Windows editions. For software user interfaces, viewing modes or operation modes can be used (e.g. basic mode or expert mode), between which the users can select to match their own needs. Both in many graphical user interfaces and