move to `aglet` dependency, break out `filter` mixin