fixed maybe_promote