/// <inheritdoc/>
        public override Video Clone(int server, bool isSpecial = false)
        {
            bool cloneMovie = false;
            bool hasSpecials = false;

            // check if Movie is on requested Server
            foreach (int serverList in this.Server)
            {
                if (serverList.Equals(server))
                {
                    cloneMovie = true;
                }
            }

            // check if Movie contains Specials, if isSpecial is requested
            if (isSpecial)
            {
                foreach (VideoFile videoFile in this.MediaFiles)
                {
                    if (videoFile.Server.Equals(server) && videoFile.IsSpecial == isSpecial)
                    {
                        hasSpecials = true;
                    }
                }
            }

            Movie movieClone = null;

            if (cloneMovie && hasSpecials == isSpecial)
            {
                movieClone = new Movie(this.Configuration);
                movieClone.Title = this.Title;
                movieClone.TitleSort = this.TitleSort;
                movieClone.TitleOriginal = this.TitleOriginal;
                movieClone.MediaGroup = this.MediaGroup;
                movieClone.Rating = this.Rating;
                movieClone.PublishingYear = this.PublishingYear;
                movieClone.PublishingDate = this.PublishingDate;
                movieClone.Content = this.Content;
                movieClone.RunTime = this.RunTime;
                movieClone.Images = this.Images; // if required, still to be cloned
                movieClone.MPAA = this.MPAA;
                movieClone.PlayCount = this.PlayCount;
                movieClone.PlayDate = this.PlayDate;
                movieClone.IMDbId = this.IMDbId;
                movieClone.Country = this.Country;
                movieClone.Genres = this.Genres;
                movieClone.Studios = this.Studios;
                movieClone.Directors = this.Directors;
                movieClone.Writers = this.Writers;
                movieClone.Actors = this.Actors;

                foreach (VideoFile videoFile in this.MediaFiles)
                {
                    if (videoFile.Server.Equals(server) && videoFile.IsSpecial == isSpecial)
                    {
                        movieClone.MediaFiles.Add((VideoFile)videoFile.Clone());
                    }
                }

                movieClone.Filename = this.Filename;
                movieClone.AddServer(server);
                movieClone.VideoCodec = this.VideoCodec;
                movieClone.VideoDefinition = this.VideoDefinition;
                movieClone.VideoAspectRatio = this.VideoAspectRatio;
                movieClone.AudioStreams = this.AudioStreams;
                movieClone.SubTitles = this.SubTitles;
                movieClone.MediaLanguages = this.MediaLanguages;
            }

            return movieClone;
        }