charge+balance implementation