implementation on the charger discharger