If we just want  BaseLibLinear to be base, we need to move _get_solver_type, code for data validation to subclass and leave only fit(). We also need to handle epsilon, class_weight specially in different subclasses. Maybe we can build a dict containing all parameters in fit() of subclass and pass X,y,solver_type,dict to fit in BaseLibLinear.