refactor charge after and before callbacks