we should probably catch `TypeError: issubclass() arg 1 must be a class` and return something more helpful "`cls must be a class`", (or "first argument" or similar)