private void ParseData(recenttracks recent)
        {
            var latestTrack = recent.tracks[0];

            OutputMoodMessage(latestTrack);
            if (logger.IsDebugEnabled)
            {
                // If we have "cached" data just write the most recent track
                if (_lastTracks != null)
                {
                    var track = recent.tracks[0];
                    LogDebug(String.Format(@"Played ""{0}"" by {1} from the album ""{2}"" on {3}", track.name, track.artist, track.album, track.date));
                    return;
                }

                // Log 'em all
                foreach (var track in recent.tracks)
                {
                    LogDebug(String.Format(@"Played ""{0}"" by {1} from the album ""{2}"" on {3}", track.name, track.artist, track.album, track.date));
                }
            }
        }
        internal void GetData()
        {
            var recent    = new recenttracks();
            var serialize = new XmlSerializer(typeof(recenttracks));
            var request   = WebRequest.Create(String.Format(lastFmUrl, LastFmUserName));

            using (var response = request.GetResponse())
                using (var stream = response.GetResponseStream()) {
                    recent = (recenttracks)serialize.Deserialize(stream);
                }

            // See if the data has changed
            if (_lastTracks == recent)
            {
                _lastTracks = recent;
                return;
            }

            // Parse
            ParseData(recent);

            // Set cached value
            _lastTracks = recent;
        }