(hopefully) last change -> return real opaque vec instead of any_vec