IMHO my preference is for *every* function to use `ensure_type` to validate its inputs.