switched to concurrent hashmap
implemented background cleanup of expired entries