I still think it would make sense to make this an abstract class in order to not redefine all methods all the time. can be a different PR