Currently, most development work is done via code and stored in non-volatile memory like flash which allows for easy development and fast programming times. Embedded flash memory in microcontrollers helps avoid problems with obsolescence since products can be quickly updated. Software can also be modified to add functionality or it can be expanded as the system is improved. This allows for upgrades to become more predictable and achievable during design and retail cycles.