with defrule

not perfect
rule macro added and updated the extractor

the extracting rules are allowed to return non map? values