recusive part 1 (bug abstract class (double draw))