the second predict() can be not virtual