Specialized embedded systems typically use microprocessors or microcontrollers with a central processing unit (CPU), require software programming, stay cheaper to implement, use less power, and remain smaller than more general use systems. Engineers first manufactured microprocessors for general use. Over time as costs came down, microprocessors and microcontrollers became available to solve specific needs. These cheaper microcontrollers and microprocessors are easily programmed to do specific tasks, like temperature control or signal processing, allowing for increased flexibility with additional features over electronic circuits that do not contain a CPU. With embedded systems, features can be implemented in software, eliminating the need for additional electronic circuitry and reducing the size and power utilization of the device. Since embedded systems run on computer code, different product models and upgrades are possible without designing a whole new system.