this helps, even if I still don't think the interfaces are making sense here, it's wrong use of interfaces, at least use abstract class to not imply this is something reusable.