Good point; I didn't think about multi-thread access. I went with the ConcurrentHashMap option as the copy-add-replace option seems to still be susceptible to threading issues. If the performance ends up being a problem I could use a simple read-write lock but that seems like overkill here.