I suggest not to use an abstract class here. Both classes share some code because of the observer pattern, but the relevant methods are essentially different.