Nice approach, I think. My only concern is that common man does not easily understand the code in the Sub Filter. Can it be made easier to read by rearranging the code? I think that minimising the lines of code is great in some circumstances, but creating black holes or black boxes is by and large not a good idea unless you don't want people receiving the code to understand it (for commercial reasons).