why is all this necessary? ``_try_cast`` does this IIRC