use Google guava immutable collections, tests showed that no performance loss