protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate (bundle);

            gmb = new Gmusicbrowser("macdesktop.orospakr.ca", 8081);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);

            playButton = FindViewById<ImageButton>
                (Resource.Id.PlayButton);
            titleTextView = FindViewById <TextView> (Resource.Id.TitleTextView);
            artistTextView = FindViewById <TextView> (Resource.Id.ArtistTextView);
            ratingBar = FindViewById <RatingBar> (Resource.Id.RatingBar);
            nextButton = FindViewById <ImageButton> (Resource.Id.NextButton);
            prevButton = FindViewById <ImageButton> (Resource.Id.PrevButton);
            volumeSeekBar = FindViewById <SeekBar> (Resource.Id.VolumeSeekBar);
            songSeekBar = FindViewById <SeekBar> (Resource.Id.SongSeekbar);

            playButton.Click += (sender, args) => {
                // button.Text = string.Format ("{0} clicks!", count++);
                gmb.PushNewPlayerState(new Player() { Playing = currentState.Playing == 1 ? 0 : 1 }).ContinueWith((playerResult) => {
                    if(playerResult.IsFaulted) {
                    } else {
                        HandleUpdatedStateFromNetwork(playerResult.Result);
                    }
                });
            };

            ratingBar.RatingBarChange += (sender, e) => {
                if(currentState != null && currentState.Current != null) {
                    var newSong = new Song() { Id = currentState.Current.Id, Rating = (int)(ratingBar.Rating * 20)};
                    gmb.PostUpdatedSong(newSong);
                }
            };

            nextButton.Click += (sender, e) => {
                gmb.Next().ContinueWith((playerResult) => {
                    HandleUpdatedStateFromNetwork(playerResult.Result);
                });
            };

            prevButton.Click += (sender, e) => {
                gmb.Previous ().ContinueWith((playerResult) => {
                    HandleUpdatedStateFromNetwork(playerResult.Result);
                });
            };

            volumeSeekBar.ProgressChanged += (sender, e) => {
                if(!preventSeekBarUpdates) {
                    gmb.PushNewPlayerState (new Player() { Volume = volumeSeekBar.Progress / (float)100 });
                }
            };

            songSeekBar.ProgressChanged += (sender, e) => {
                if(!preventSeekBarUpdates) {
                    gmb.PushNewPlayerState (new Player() { PlayPosition = songSeekBar.Progress });
                }
            };

            prog = new ProgressDialog (this);
            prog.SetProgressStyle(ProgressDialogStyle.Spinner);
            prog.SetMessage(this.GetString(Resource.String.connection_progress));
            prog.Show ();
        }