Should we put in some `asarray`s here, to check early if it's possible and potentially save some communication overhead?