public void AddCloud(AvailableCloud selectedItem) { var name = selectedItem.Name; var letters = VirtualDriveWrapper.GetFreeDriveLettes(); if (letters.Count == 0) { throw new InvalidOperationException("No free letters"); } if (Clouds.Any(c => c.CloudInfo.Name == name)) { int i = 1; while (Clouds.Any(c => c.CloudInfo.Name == name + " " + i)) { i++; } name = name + " " + i; } var info = new CloudInfo { Id = Guid.NewGuid().ToString(), Name = name, ClassName = selectedItem.ClassName, AssemblyFileName = selectedItem.AssemblyFileName, DriveLetter = letters[0] }; var mount = new CloudMount(info, this); Clouds.Add(mount); SaveClouds(); }