So...  I think it's a little odd to have one callback that takes a direction and then two callbacks, one for each direction.  It seems like either the filter callback should take a direction, or we should have two `should...()` callbacks...