PIM-3319: Added abstract class to make code more clean