predictor abstract class