Address review comments - prefer CopyOnWriteArrayList over our own synchronization