protected void startRound() {
		
		System.out.println( "Round has started" );
		//generate a problem
		int randomSeed = ( int )( Math.random() * 100000 );
		try {
			Process runGenerator = Runtime.getRuntime().exec( "./a.out " + ONE_SIXTY_THREE + " " + NUM_CARDS + " " + randomSeed );
			BufferedReader cardReader = new BufferedReader( new InputStreamReader( runGenerator.getInputStream() ) );
			
			//read in the cards generated by the generator
			for ( int i = 0 ; i < this.m_cards.length ; i++ ) {
				this.m_cards [ i ] = Integer.parseInt( cardReader.readLine() );
			}
			//close inputs
			cardReader.close();
		} catch ( IOException e ) {
			
			//TODO notify users of internal error
			for ( Contestant c : this.m_contestants ) {
				MessageWriter.writeInternalError( c.getCommunicator() );
			}
			return;
		}
		
		//TODO send the problem to all the players
		for ( Contestant c : this.m_contestants ) {
			MessageWriter.writeNewProblem( c.getCommunicator() , this.m_cards );
		}
		
		//start the timer
		this.m_timer = new CountdownTimer( this.m_rules.getRoundDuration() );
		this.m_timer.start();
		
		//DEBUG
		for ( int i = 0 ; i < this.m_cards.length ; i++ ) {
			System.out.print( this.m_cards[ i ] + " ");
		}
		System.out.println();
		
		//update number of rounds left
		this.m_roundsLeft--;
	}