what is the goal of this abstract class you are introducing ? This looks weird as you are not even uisng it for the instanceof checks