private void createListeners() {
		StringConverter<? extends Number> converter = new DoubleStringConverter();
		
		resetValues();
		
		
		/* initialize mediators */
		ToolsSizeMediator tsMediator = new ToolsSizeMediator();
		tsMediator.getCurTool().bindBidirectional(cbTools.valueProperty());
		sSize.disableProperty().bind(tsMediator.getDisable());
		
		ToolsRadiusMediator trMediator = new ToolsRadiusMediator();
		trMediator.getCurTool().bindBidirectional(cbTools.valueProperty());
		sRadius.disableProperty().bind(trMediator.getDisable());
		
		ToolsWidthMediator twMediator = new ToolsWidthMediator();
		twMediator.getCurTool().bindBidirectional(cbTools.valueProperty());
		sWidth.disableProperty().bind(twMediator.getDisable());
		
		ToolsHeightMediator thMediator = new ToolsHeightMediator();
		thMediator.getCurTool().bindBidirectional(cbTools.valueProperty());
		sHeight.disableProperty().bind(thMediator.getDisable());
		
		ToolsResizeMediator trsMediator = new ToolsResizeMediator();
		trsMediator.getCurTool().bindBidirectional(cbTools.valueProperty());
		sResize.disableProperty().bind(trsMediator.getDisable());
		
		ToolsButtonsMediator tbMediator = new ToolsButtonsMediator();
		cbTools.disableProperty().bind(tbMediator.getDisable());
		
		ToolsButtonsMediator tcMediator = new ToolsButtonsMediator();
		colorPicker.disableProperty().bind(tcMediator.getDisable());
		
		mediatorList.add(tsMediator);
		mediatorList.add(trMediator);
		mediatorList.add(twMediator);
		mediatorList.add(thMediator);
		mediatorList.add(trsMediator);
		mediatorList.add(tbMediator);
		mediatorList.add(tcMediator);
		
		Bindings.bindBidirectional(lblRadius.textProperty(), sRadius.valueProperty(), (StringConverter<Number>)converter);
		lblRadius.textProperty().addListener(new ChangeListener<String>()  {
			@Override
			public void changed(ObservableValue<? extends String> observable,
					String oldValue, String newValue) {
				lblRadius.setText(Integer.toString((int) Double.parseDouble(newValue)));
				setPreferences("keep");
			}
		});
		
		Bindings.bindBidirectional(lblSize.textProperty(), sSize.valueProperty(), (StringConverter<Number>)converter);
		lblSize.textProperty().addListener(new ChangeListener<String>()  {
			@Override
			public void changed(ObservableValue<? extends String> observable,
					String oldValue, String newValue) {
				lblSize.setText(Integer.toString((int) Double.parseDouble(newValue)));
				setPreferences("keep");
			}
		});
		
		Bindings.bindBidirectional(lblWidth.textProperty(), sWidth.valueProperty(), (StringConverter<Number>)converter);
		lblWidth.textProperty().addListener(new ChangeListener<String>()  {
			@Override
			public void changed(ObservableValue<? extends String> observable,
					String oldValue, String newValue) {
				lblWidth.setText(Integer.toString((int) Double.parseDouble(newValue)));
				setPreferences("keep");
			}
		});
		
		Bindings.bindBidirectional(lblHeight.textProperty(), sHeight.valueProperty(), (StringConverter<Number>)converter);
		lblHeight.textProperty().addListener(new ChangeListener<String>()  {
			@Override
			public void changed(ObservableValue<? extends String> observable,
					String oldValue, String newValue) {
				lblHeight.setText(Integer.toString((int) Double.parseDouble(newValue)));
				setPreferences("keep");
			}
		});
		
		Bindings.bindBidirectional(lblResize.textProperty(), sResize.valueProperty(), (StringConverter<Number>)converter);
		sResize.valueProperty().bindBidirectional(trsMediator.sliderValue);
		lblResize.textProperty().addListener(new ChangeListener<String>()  {
			@Override
			public void changed(ObservableValue<? extends String> observable,
					String oldValue, String newValue) {
				lblResize.setText(Integer.toString((int) Double.parseDouble(newValue)));
				setPreferences("keep");
			}
		});
		
		cbTools.valueProperty().addListener(new ChangeListener<String>()  {
			@Override
			public void changed(ObservableValue<? extends String> observable,
					String oldValue, String newValue) {
				setPreferences("keep");
			}
		});
		
		colorPicker.valueProperty().addListener(new ChangeListener<Paint>()  {
			@Override
			public void changed(ObservableValue<? extends Paint> observable,
					Paint oldValue, Paint newValue) {
				setPreferences("keep");
			}
		});
		/* here so double values are not shown */
		resetLabels();
	}