The composite filter is the part I'm not entirely satisfied yet. Current implement name the filter using a string to allow easier removal. If you have some more idea...