charge structure factory overridable. updated charge_spec