public void Load(bool from_cache)
        {
            bool retreiving = false;

            if (cached && from_cache)
            {
                retreiving = LoadFromCache();
            }

            try {
                if (!retreiving)
                {
                    uint [] handles = { Contact.Handle };

                    State = AvatarState.Loading;

                    IDictionary <uint, string> tokens = avatars.GetKnownAvatarTokens(handles);
                    if (tokens.Count == 0)
                    {
                        State = AvatarState.NoAvatar;
                    }
                    else
                    {
                        avatars.AvatarRetrieved += OnAvatarRetrieved;
                        avatars.RequestAvatars(handles);
                    }
                }
            }
            catch (Exception e) {
                Console.WriteLine(e.ToString());
                State = AvatarState.NoAvatar;
            }
        }