make type assertions both instance and static functions
initial inherits() implementation