some cloud does not have internalURL so it's now optional