This has a much better explanation than the FilterInterface does on how to add it to another driver.
For the most part you just add the FI:: stuff and then override the functions you need to, on that page, you can see which functions get overridden/implemented by which drivers, example of something not needing to be overridden: CanAbort() (since it just reads flags), whereas AbortFocuser() is overridden just about everywhere.