implemented subclass