promote_opt is removed since we have a generic implicit conversion procedure