implement set data structure