don't use instanceof