allow any callable as semantic rule
Merge with readme update