Concerns and inheritance

Full refactoring based on what @jasonayre built (#27)  which was built on top of the initial filter work I did (#22).