reworked masks to use arbitrary predicates
added aspect.mli