private void registerListeners() {
        getSkinnable().widthProperty().addListener(observable -> handleControlPropertyChanged("RESIZE") );
        getSkinnable().heightProperty().addListener(observable -> handleControlPropertyChanged("RESIZE") );
        getSkinnable().titleProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().unitProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().lowerRightTextProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().numberSystemProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().textModeProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().textProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().currentValueProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().lowerCenterTextProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().minMeasuredValueProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().maxMeasuredValueProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().upperLeftTextProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().upperRightTextProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().batteryChargeProperty().addListener(observable -> handleControlPropertyChanged("UPDATE") );
        getSkinnable().signalStrengthProperty().addListener(observable -> handleControlPropertyChanged("UPDATE"));
        getSkinnable().prefWidthProperty().addListener(observable -> handleControlPropertyChanged("PREF_SIZE") );
        getSkinnable().prefHeightProperty().addListener(observable -> handleControlPropertyChanged("PREF_SIZE") );
        getSkinnable().valueFontProperty().addListener(observable -> handleControlPropertyChanged("FONT") );
        getSkinnable().smallFontProperty().addListener(observable -> handleControlPropertyChanged("FONT") );
        getSkinnable().unitFontProperty().addListener(observable -> handleControlPropertyChanged("FONT") );
        getSkinnable().numberSystemVisibleProperty().addListener(observable -> handleControlPropertyChanged("NUMBER_SYSTEM_VISIBLE") );
        getSkinnable().backgroundVisibleProperty().addListener(observable -> handleControlPropertyChanged("BACKGROUND_VISIBLE") );
        getSkinnable().crystalOverlayVisibleProperty().addListener(observable -> handleControlPropertyChanged("CRYSTAL_OVERLAY_VISIBLE") );
        getSkinnable().mainInnerShadowVisibleProperty().addListener(observable -> handleControlPropertyChanged("MAIN_INNER_SHADOW_VISIBLE"));
        getSkinnable().foregroundShadowVisibleProperty().addListener(observable -> handleControlPropertyChanged("FOREGROUND_SHADOW_VISIBLE") );
        getSkinnable().animationDurationProperty().addListener(observable -> handleControlPropertyChanged("ANIMATION_DURATION") );
        getSkinnable().trendProperty().addListener(observable -> handleControlPropertyChanged("TREND") );
        getSkinnable().valueVisibleProperty().addListener(observable -> handleControlPropertyChanged("VALUE_VISIBLE") );
        getSkinnable().unitVisibleProperty().addListener(observable -> handleControlPropertyChanged("UNIT_VISIBLE") );
        getSkinnable().lowerCenterTextVisibleProperty().addListener(observable -> handleControlPropertyChanged("LOWER_CENTER_VISIBLE") );
        getSkinnable().lowerRightTextVisibleProperty().addListener(observable -> handleControlPropertyChanged("LOWER_RIGHT_VISIBLE") );
        getSkinnable().upperLeftTextVisibleProperty().addListener(observable -> handleControlPropertyChanged("UPPER_LEFT_VISIBLE") );
        getSkinnable().upperRightTextVisibleProperty().addListener(observable -> handleControlPropertyChanged("UPPER_RIGHT_VISIBLE") );
        getSkinnable().batteryVisibleProperty().addListener(observable -> handleControlPropertyChanged("BATTERY_VISIBLE") );
        getSkinnable().signalVisibleProperty().addListener(observable -> handleControlPropertyChanged("SIGNAL_VISIBLE"));
        getSkinnable().alarmVisibleProperty().addListener(observable -> handleControlPropertyChanged("ALARM_VISIBLE") );
        getSkinnable().formerValueVisibleProperty().addListener(observable -> handleControlPropertyChanged("FORMER_VALUE_VISIBLE") );
        getSkinnable().maxMeasuredValueVisibleProperty().addListener(observable -> handleControlPropertyChanged("MAX_MEASURED_VISIBLE") );
        getSkinnable().minMeasuredValueVisibleProperty().addListener(observable -> handleControlPropertyChanged("MIN_MEASURED_VISIBLE") );

        getSkinnable().addEventFilter(ValueEvent.VALUE_EXCEEDED, valueEvent -> {handleControlPropertyChanged("THRESHOLD_EXCEEDED");});
        getSkinnable().addEventFilter(ValueEvent.VALUE_UNDERRUN, valueEvent -> {handleControlPropertyChanged("THRESHOLD_UNDERRUN");});

        getSkinnable().getStyleClass().addListener(new ListChangeListener<String>() {
            @Override public void onChanged(Change<? extends String> change) {
                resize();
                updateLcd();
            }
        });
    }