maybe add a separate exception case when a object is provided but does not define a `__toString()` method?