public override void Deactivate()
		{
			if(_gatherControl != null)
			{
				_gatherControl.Cleanup();
			}
			// get the counts cached before we deactivate
			GetRemainingCount();
			GetReferenceCount();
			base.Deactivate();
			_gatherControl.Dispose();
			_gatherControl = null;
			UpdateCurrentWords(); // clears out orphan records
		}
		public override void Activate()
		{
			base.Activate();
			if (DomainKeys == null)
			{
				_domainKeys = new List<string>();
				_domainQuestions = new Dictionary<string, List<string>>();
				ParseSemanticDomainFile();

				// always have at least one domain and one question
				// so default indexes of 0 are valid.
				if (_domainKeys.Count == 0)
				{
					_domainKeys.Add(string.Empty);
				}
				if (_domainQuestions.Count == 0)
				{
					List<string> emptyList = new List<string>();
					emptyList.Add(string.Empty);
					_domainQuestions.Add(string.Empty, emptyList);
				}
			}
			if (_semanticDomainOptionsList == null)
			{
				_semanticDomainOptionsList =
					WeSayWordsProject.Project.GetOptionsList(_semanticDomainField, false);
			}

			UpdateCurrentWords();
			if (CurrentDomainIndex == -1)
			{
				GotoLastDomainWithAnswers();
			}
			_gatherControl = new GatherBySemanticDomainsControl(this);
		}