use a set for state instead