/// <summary>
        /// Validate person data against a list of specified validation and it will removed invalid data from collection
        /// </summary>
        /// <param name="persons"></param>
        /// <returns></returns>
        public IList <PersonDTO> Validate(IList <PersonDTO> persons)
        {
            List <PersonDTO> toRemove = new List <PersonDTO>();

            Messages = new List <string>();

            foreach (var person in persons)
            {
                _validationList = new ValidationList();
                //_validationList.Add(new LastNameValidation(person));
                _validationList.Add(new GivenNameValidation(person));

                _validationList.Validate();

                if (!_validationList.IsValid)
                {
                    toRemove.Add(person);
                    Messages = Messages.Concat(_validationList.Messages);
                }
            }

            foreach (var itemToBeDeleted in toRemove)
            {
                persons.Remove(itemToBeDeleted);
            }

            return(persons);
        }