use set instead of list for performance reasons