use trove maps/sets to save some memory