fix as_* logic