/// <summary>
        /// Converts a comma separated list of times
        /// </summary>
        /// <param name="day"></param>
        /// <returns></returns>
        protected virtual IEnumerable <TimeSpan> ParseDay(string day)
        {
            Guard.AgainstEmpty(day);

            var pi = myConfig.GetType().GetProperty(day);

            Guard.AgainstNull(pi, string.Format("Day '{0}' does not match a configuration property", day));

            var dayAlarms = pi.GetValue(myConfig, null);

            if (dayAlarms == null)
            {
                return(new TimeSpan[0]);
            }
            if (string.IsNullOrEmpty(dayAlarms.ToString()))
            {
                return(new TimeSpan[0]);
            }

            var alarms = new List <TimeSpan>();
            var parts  = dayAlarms.ToString().Split(',');

            foreach (var part in parts)
            {
                TimeSpan alarm;

                if (!TimeSpan.TryParse(part, out alarm))
                {
                    throw new FormatException(string.Format("{0} part '{1}' is invalid", day, part));
                }

                if (!alarms.Contains(alarm))
                {
                    alarms.Add(alarm);
                }
            }

            return(alarms);
        }