try to return always `(cls, attrs)` and construct the object on caller side