/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="MainActivity"></param>
        public ChatClient(MainActivity MainActivity)
            : base()
        {
            // save reference to UI
            ui = MainActivity;

            // check if necessary SDCARD stuff exists
            if (VerifySDCard())
            {
                // load versions from xml
                ReadVersionsFromFile();

                // create data adapters for model layer
                ChatAdapter          = new ChatMessageAdapter(DataController.ChatMessages, ui);
                OnlinePlayersAdapter = new OnlinePlayersAdapter(DataController.OnlinePlayers, ui);

                // hook up some event handlers
                DataController.RoomInformation.PropertyChanged += RoomInformation_PropertyChanged;
                DataController.AvatarCondition.ListChanged     += AvatarCondition_ListChanged;

                // workaround for monodroid because there is no proper access to mainthread:
                // spawn a thread that forces mainthread to process a tick
                thread = new Thread(ThreadProc);
                thread.Start();
            }
            else
            {
                ui.ShowSDCARDError();
            }
        }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="MainActivity"></param>
        public ChatClient(MainActivity MainActivity)
            : base()
        {
            // save reference to UI
            ui = MainActivity;

            // check if necessary SDCARD stuff exists
            if (VerifySDCard())
            {
                // load versions from xml
                ReadVersionsFromFile();

                // create data adapters for model layer
                ChatAdapter = new ChatMessageAdapter(DataController.ChatMessages, ui);
                OnlinePlayersAdapter = new OnlinePlayersAdapter(DataController.OnlinePlayers, ui);

                // hook up some event handlers
                DataController.RoomInformation.PropertyChanged += RoomInformation_PropertyChanged;
                DataController.AvatarCondition.ListChanged += AvatarCondition_ListChanged;

                // workaround for monodroid because there is no proper access to mainthread:
                // spawn a thread that forces mainthread to process a tick
                thread = new Thread(ThreadProc);
                thread.Start();
            }
            else
            {
                ui.ShowSDCARDError();
            }
        }