get rid of abstract class - down to 85 lines