will submit another PR to use sets.