noticing that ids are not unique enough
uses guid for ids