better isNode detection, fix _supports return val