Some suggestions

autoformat and changed to use interfaces directly instead of base class