private void initGraphics() {
        Font.loadFont(getClass().getResourceAsStream("/eu/hansolo/enzo/fonts/opensans-semibold.ttf"), (0.5 * PREFERRED_HEIGHT)); // "OpenSans"
        font = Font.font("Open Sans", 0.5 * PREFERRED_HEIGHT);

        background = new Region();
        background.getStyleClass().setAll("background");
        background.setStyle("-switch-color: " + Util.colorToCss((Color) getSkinnable().getSwitchColor()) + ";");

        selectedText  = new Text("1");
        selectedText.setFont(font);
        selectedText.getStyleClass().setAll("selected-text");
        selectedText.setStyle("-text-color-on: " + Util.colorToCss((Color) getSkinnable().getTextColorOn()) + ";");

        deselectedText = new Text("0");
        deselectedText.setFont(font);
        deselectedText.getStyleClass().setAll("deselected-text");
        deselectedText.setStyle("-text-color-off: " + Util.colorToCss((Color) getSkinnable().getTextColorOff()) + ";");

        thumb = new Region();
        thumb.getStyleClass().setAll("thumb");
        thumb.setMouseTransparent(true);
        thumb.setStyle("-thumb-color: " + Util.colorToCss((Color) getSkinnable().getThumbColor()) + ";");

        pane = new Pane(background, selectedText, deselectedText, thumb);
        pane.getStyleClass().setAll("on-off-switch");

        moveToDeselected = new TranslateTransition(Duration.millis(180), thumb);
        moveToSelected = new TranslateTransition(Duration.millis(180), thumb);

        // Add all nodes
        getChildren().setAll(pane);
    }