Okay - I realized that I can get rid of (id) filter in the base class without destroying generic behavior. I realized that no matter what, a user is going to have to make explicit checks to the class type or return type of the filter in order to handle it properly.