tagger works, a little faster, but still like O(n^6)