public IList<AchievedAchievement> Parse(HtmlNode achievementNode, Character character)
        {
            List<Achievement> achievements = new List<Achievement>();
            List<AchievedAchievement> actualAchievements = new List<AchievedAchievement>();
            if (achievementNode == null)
            {
                throw new ArgumentNullException("achievementNode");
            }

            string achievementId = achievementNode.Attributes["data-id"].Value;
            int blizzardId = 0;
            int.TryParse(achievementId, out blizzardId);

            Achievement achievement = _service.Find(blizzardId);

            if (achievement == null)
            {
                Console.WriteLine("Found unknown achievement {0}", achievementId);
            }

            if (!achievementNode.Attributes["class"].Value.Contains("locked"))
            {
                //
                DateTime whenAchieved = GetValueAsDateTime(achievementNode, "./div[@class='points-big border-8']/span[@class='date']");

                if (!character.HasAchieved(achievement))
                {
                    character.AddNewAchivement(whenAchieved, achievement);
                }

                // check to see if achievement is part of a series
                if (achievement != null && achievement.Series != null)
                {
                    // get all achievements under the one we have displayed

                    foreach (Achievement seriesAchievement in _service.GetAllInSeries(achievement.Series).Where(a => a.SeriesOrder < achievement.SeriesOrder))
                    {
                        if (!character.HasAchieved(achievement))
                        {
                            character.AddNewAchivement(whenAchieved.AddDays(-1), seriesAchievement);
                        }

                    }
                }
            }
            return actualAchievements;
        }