With time, it was recognized that firmware, like other forms of software, was subject to coding mistakes and that over the lifetime of the device there might be a need to modify the functional characteristics of the device, for example, to adapt it to a new target environment.