protect dtypes
update function signatures with varargs