Do you have an issue with using `ensure_type`?  IMHO it's been extremely powerful...

1.  It checks the shape of the inputs
2.  It checks the dtype of the inputs
3.  It raises an error if something is wrong