Full rewrite to use transformation rulesets