The situation that arises when vendor-specific, proprietary, or optional APIs are added to mobile devices to expand device functionality. Other device attributes, such as screen size, color depth, available memory, and others, also contribute to device fragmentation, which makes it difficult to write a single application that will run on all targeted devices.