removed tostring since it's causing concurrentmodificationexception in some cases (needs to be synchronized, but performance penalty not worth it for logging)