- take out the iterator approach here as it does not support concurrent access