String pickInitialState(StateTree pathsToExplore) throws IOException {
		
		execCommand("bmc_pick_state -v -i");
		try {
			Thread.sleep(80);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		String fileContents = IOUtils.readFileAsString(outFile);
		List<eu.fbk.soa.evolution.sts.State> initialStates = 
			NuSMVOutputHandler.addInitialStatesToSTS(fileContents, sts);
		
		while (initialStates.isEmpty()) {
			try {
				logger.info("Read file to soon, waiting..");
				Thread.sleep(200);
			} catch (InterruptedException ie) {
				ie.printStackTrace();
			}
			fileContents = IOUtils.readFileAsString(outFile);
			initialStates = NuSMVOutputHandler.addInitialStatesToSTS(fileContents, sts);
		}
		
		
		List<Node> nodes = pathsToExplore.getRoot().addChildren(initialStates);
		if (nodes.isEmpty()) {
			nodes = pathsToExplore.getRoot().getChildren();
		}
		
		int index = 0;
		if (nodes.size() > 1) {		
			for (int i = 0; i < nodes.size(); i++) {
				if (!nodes.get(i).subtreeIsVisited()) {
					index = i;
					break;
				}
			}
		}
		
		initialNode = nodes.get(index);
		initialNode.visit();

		execCommand(String.valueOf(index));
		waitForCommandPrompt();

		synchronized(this) {
			return printConsole();
		}		
	}