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