There are a number of problems with using the method-override pattern in this instance: 

- this version of the method doesn't stand alone; subclasses must override it, whereas overriding methods is typically optional.
- the subclass must call the `super` version, which is only usually a pattern in init and dealloc methods.
- this version of the method doesn't use the `error` parameter, but subclasses have to deal with the fact it *might*.
- the awkwardness that you create a mutable dictionary here, then return it as an immutable dictionary, forcing the subclasses to either cast -- breaking encapsulation -- or copy, an inefficiency.

I think having a helper method which added common information to an existing mutable dictionary would solve all these issues. A simple `-addFilterParams:(NSMutableDictionary*)` would work. As it's internal, if we add other functionality we can rename the method too.

As objective-c doesn't have abstract methods, you might want to leave this in, just returning `nil` as I ended up having to do in the [CDTAttachment class](https://github.com/cloudant/CDTDatastore/blob/master/Classes/common/Attachments/CDTAttachment.m#L37) or throw an exception, as in [this SO answer](http://stackoverflow.com/a/1034464/290514).