Re-factoring to remove unneeded cruft
Changed interface to abstract class, renamed implementer extender
classes, removed cruft