handle subclasses