public FroshProjectController() throws FroshProjectException {
        // Get the View class
        //
        String viewClassName = FroshProjectConfig.getProperty("View.className");
        if (viewClassName == null) {
            viewClassName = "CLIView";
        }

        // Log a message
        //
        FroshProject.getLogger().log(Level.INFO,
        		"Initializing view class(es) : " + viewClassName);

        // Get the corresponding Class object
        //
        try {
        	views = new LinkedList<FroshProjectView>();
        	
        	// Parse the multiple view String
        	//
        	for(String s : viewClassName.split(";")){
	            // Create the view
	            //
	            FroshProjectView v = (FroshProjectView) Class.forName(
	                    "froshproject.view." + s).newInstance();
	
	            // Set the controller
	            //
	            v.setController(this);
	            views.add(v);
        	}
        } catch (ClassNotFoundException cnf) {
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.VIEW_CLASS_NOT_FOUND, cnf);
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.VIEW_CLASS_ERROR, ex);
        }

        // Log a message
        //
        FroshProject.getLogger().log(Level.INFO,
                "View class loaded : " + viewClassName);

        // Create the World object
        //
        world = new World();

        // Set the controller as observer of the World
        //
        world.addObserver(this);

        // Log a message
        //
        FroshProject.getLogger().log(Level.INFO, "World initialized");

        // Initialize the view
        //
        for(FroshProjectView v : views){
        	v.initInterface(null);
        }
    }