add charge func