added correct subclassing