extract CAL learner into one class