lots of tiny changes to get the exact predicates to compile (othercore)