child class can define type