redeclare as virtual