use a mutliset instead of set as it was collapsing the unionable candidates just like a set should. added to_string for candidate object as its useful for debugging. empty features arent being removed from layer which is causing latest failure