// Public interface
        public IObservedClonable Clone( EGameStateClonePermission permission )
        {
            CPlayerHand player_hand = new CPlayerHand();
            player_hand.m_Count = m_Count;

            if ( permission == EGameStateClonePermission.Full )
            {
                Cards.SimpleClone( player_hand.m_Cards );
            }

            return player_hand;
        }
		// Private interface
		private void Create_Player_Hands()
		{
			foreach ( var player_id in m_TurnSequence )
			{
				CPlayerHand player_hand = new CPlayerHand();
				for ( uint i = 0; i < CGameProperties.StartingHandSize; i++ )
				{
					player_hand.Add_Card( m_Deck.Draw_Card() );
				}

				m_PlayerHands.Add( player_id, player_hand );
			}
		}