Hmmm, the further I code into this solution the closer it's getting to yours. In my working copy, I am now iterating over both sets of rules as some words cannot be caught using one rule set only! :(