inheriting from an abstract class was a bad idea