Added a new abstract class to perform learning methods