private void recButton_Click(object sender, EventArgs e)
        {
            if (currentStage == AssessmentStage.Preparing) return;

            if (currentStage == AssessmentStage.Preamble)
            {
                StartAssessment();
                return;
            }

            if (recording)
            {
                TimeSpan recTime = DateTime.Now - timeRecStarted;

                if (recTime.TotalMilliseconds < MinimumMillis) return;

                // Stop recording and move onto next task/finish
                StopRecording();

                if (!currentFragment.IsFinished())
                {
                    currentFragment.NextAction();
                }
                else
                {
                    taskIndex++;

                    if (taskIndex < tasks.Length)
                    {
                        loadingContainer.Visibility = ViewStates.Visible;
                        fragmentContainer.Visibility = ViewStates.Gone;

                        currentFragment = null;
                        SetNewFragment();

                        if (currentFragment != null)
                        {
                            FragmentManager.BeginTransaction()
                                .Replace(Resource.Id.fragment_container, currentFragment, "ASSESSMENT_TASK")
                                .Commit();

                            currentFragment.runOnceCreated.Push(
                            delegate { RunOnUiThread(() => { assessmentType.Text = currentFragment.GetTitle(); }); });
                        }

                        loadingContainer.Visibility = ViewStates.Gone;
                        fragmentContainer.Visibility = ViewStates.Visible;
                    }
                    else
                    {
                        FinishAssessment();
                    }
                }
            }
            else
            {
                StartRecording();
            }
        }