I hate to be the usual "Use the Search Function" Guy but....
There are a ton of long winded threads on these subjects. The bottom line is that no one has come up with the perfect solution. Filters are ugly & restrictive. Boxes can work but no one wants that under the hood.