PIM-3558 : re-work the fix to use interfaces and not abstract classes