The next level of sophistication and feature flexibility comes from using a software or host-controlled charger. In this case, the charger IC performs all the necessary power conversion and status monitoring functions associated with charging the battery, but receives specific control parameters from the system host processor via an I²C port. A specific set of I²C registers are defined within the device that support the adjustment of charge current, peak voltage, timer settings, and status read back to the host system. While this requires some additional software investment at the system level, it allows for the most flexibility in systems which may want to be easily adapted to different battery types and provides more information regarding the status of the charging process or battery conditions.