Needs bug testing. a few concurrentModificationExceptions