DRY up some of the filter creation code

Use a factory to create filter instances, they probably no longer need to be referred to
by name now either.