public void onModuleLoad() {
		try {
			presenter = new GamePresenter(this, new PlayAgainstComputerController(new PlayerFactory()) );
		} catch (Exception e) {
			e.printStackTrace();
			Window.alert("Initialization error. Sorry you cannot play at this time.");
			return;
		}
		informationPanel.add(myScoreTable);
		informationPanel.add(new HTML("<div style=\'margin-left:50px; margin-right:50px; margin-top:16px; margin-bottom: 40px\'>VS</div>"));
		informationPanel.add(computerScoreTable);
		controlsPanel.add(startMatch);
		mainPanel.add(informationPanel);
		mainPanel.add(controlsPanel);
		mainPanel.add(choiceButtons);
		mainPanel.add(gameScoreTable);
		RootPanel.get().add(mainPanel);
		gameScoreTable.setVisible(false);
		choiceButtons.setVisible(false);
		informationPanel.setVisible(false);
		mainPanel.setVisible(false);
		final HorizontalPanel enrollPanel = new HorizontalPanel();
		final DialogBox dialogBox = new DialogBox();
		final HTML errorMessage = new HTML("<span style=\'color:red\'>Please, tell me your name</span>");
		dialogBox.setText("Let's play Rock-Paper-Scissors against Computer! State your nick:");
		dialogBox.add(inputPlayerName);
		dialogBox.setAnimationEnabled(true);
		final Button enrollButton = new Button("Go and Have Fun!");
		dialogBox.show();
		RootPanel.get().add(dialogBox);
		enrollPanel.add(enrollButton);
		enrollPanel.add(errorMessage);
		errorMessage.setVisible(false);
		RootPanel.get().add(enrollPanel);
		enrollButton.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				if("".equals(inputPlayerName.getText())) {
					errorMessage.setVisible(true);
					return;
				}
				RootPanel.get().remove(enrollPanel);
				RootPanel.get().remove(dialogBox);
				enrollButton.setVisible(false);
				presenter.setPlayerName(inputPlayerName.getText());
				mainPanel.setVisible(true);
			}
		});
		startMatch.addClickHandler(new ClickHandler() {

			@Override
			public void onClick(ClickEvent event) {
				presenter.startNewMatch();
				startMatch.setVisible(false);
				informationPanel.setVisible(true);
				choiceButtons.setVisible(true);
				gameScoreTable.setVisible(true);
				gameScoreTable.reset();
			}
			
		});
	}