//--------------------------------------
		// 	Event Handlers
		//--------------------------------------

		/// <summary>
		/// _s the on tween to new position entry completed.
		/// </summary>
		/// <param name="gemView">Gem view.</param>
		private void _OnGemTweenToNewPositionEntryCompleted (GemViewComponent gemView)
		{
			gemView.OnTweenToNewPositionEntryCompleted -= _OnGemTweenToNewPositionEntryCompleted;

			//	ARE 100% IN PROPER TARGET POSITION?
			if (_gemViews.Where (nextGemView => nextGemView.IsAtTargetPosition()).Count() == _gemViews.Count)
			{

				CoroutineManager.Instance.WaitForSecondsToCall (_controller.CheckForMatches, TripleMatchConstants.DURATION_DELAY_BEFORE_CHECK_FOR_MATCHES);

			}
		}
		/// <summary>
		/// _s the on gem clicked.
		/// </summary>
		/// <param name="gemView">Gem view.</param>
		private void _OnGemViewClicked (GemViewComponent gemView)
		{
			//
			if (_model.GameState == GameState.PLAYING && _model.IsInputEnabled)
			{

				if (_model.SelectedGemVO == null)
				{
					//	1. SELECT FIRST GEM IN A PAIR
					_controller.SelectedGemVO = gemView.GemVO;
				}
				else if (_model.SelectedGemVO == gemView.GemVO)
				{
					//	2. DESELECT FIRST GEM IN A PAIR
					_controller.SelectedGemVO = null;
					
				}
				else if (Model.AreGemVOsSwappable (_model.SelectedGemVO, gemView.GemVO))
				{
					//	3. SWAP FIRST & SECOND GEM IN A PAIR
					_AttemptSwapTwoGemVOs (_model.SelectedGemVO, gemView.GemVO);
					_controller.SelectedGemVO = null;

				}
				else 
				{
					//	4. DESELECTED ALL
					_controller.SelectedGemVO = null;
				}

			}
			else
			{

				if (AudioManager.IsInstantiated())
				{
					AudioManager.Instance.PlayAudioResourcePath (TripleMatchConstants.PATH_GEM_CLICK_FAIL_AUDIO, TripleMatchConstants.VOLUME_SCALE_SFX_2);
				}

			}
		}
		/// <summary>
		/// _s the do destroy and remove gem view.
		/// </summary>
		/// <param name="gemView">Gem view.</param>
		private void _DoDestroyAndRemoveGemView (GemViewComponent gemView)
		{
			gemView.OnClicked -= _OnGemViewClicked;
			gemView.OnTweenToNewPositionEntryCompleted -= _OnGemTweenToNewPositionEntryCompleted;
			gemView.Destroy();
			_gemViews.Remove (gemView);
		}