memory optimization, esp. for large scenarios: the Strings internally used are interned (see String.intern()), such that multiple Ids with the same id-value (e.g. Link 1, Node 1, Person 1, Facility 1) don't use multiple Strings to store the value, but only one. The performance penalty (only occurring when creating Ids, mostly when reading in files) should be negligible.