This can be async.