private void UpdateAxes()
        {
            // handle update to persistent properties
            if (X_AXIS != null && X_AXIS.activeSelf)
            {
                X_AXIS.GetComponent <Axis>().Length = visualisationReference.width;
                X_AXIS.GetComponent <Axis>().UpdateLength();
            }
            if (Y_AXIS != null && Y_AXIS.activeSelf)
            {
                Y_AXIS.GetComponent <Axis>().Length = visualisationReference.height;
                Y_AXIS.GetComponent <Axis>().UpdateLength();
            }
            if (Z_AXIS != null && Z_AXIS.activeSelf)
            {
                Z_AXIS.GetComponent <Axis>().Length = visualisationReference.depth;
                Z_AXIS.GetComponent <Axis>().UpdateLength();
            }

            foreach (View view in viewList)
            {
                view.transform.localScale = new Vector3(
                    visualisationReference.width,
                    visualisationReference.height,
                    visualisationReference.depth
                    );
            }
        }
        public void UpdateVisualisationAxes(AbstractVisualisation.PropertyType propertyType)
        {
            switch (propertyType)
            {
            case AbstractVisualisation.PropertyType.X:
                if (visualisationReference.xDimension.Attribute == "Undefined" && X_AXIS != null)    // GameObject_Axes_Holders[0] != null)
                {
                    DestroyImmediate(X_AXIS);
                }
                else if (X_AXIS != null)
                {
                    Axis a = X_AXIS.GetComponent <Axis>();
                    a.Initialise(visualisationReference.dataSource, visualisationReference.xDimension, visualisationReference);
                    BindMinMaxAxisValues(a, visualisationReference.xDimension);
                }
                else if (visualisationReference.xDimension.Attribute != "Undefined")
                {
                    Vector3 pos = Vector3.zero;
                    pos.y  = -0.025f;
                    X_AXIS = CreateAxis(propertyType, visualisationReference.xDimension, pos, new Vector3(0f, 0f, 0f), 0);
                }
                break;

            case AbstractVisualisation.PropertyType.Y:
                if (visualisationReference.yDimension.Attribute == "Undefined" && Y_AXIS != null)
                {
                    DestroyImmediate(Y_AXIS);
                }
                else if (Y_AXIS != null)
                {
                    Axis a = Y_AXIS.GetComponent <Axis>();
                    a.Initialise(visualisationReference.dataSource, visualisationReference.yDimension, visualisationReference);
                    BindMinMaxAxisValues(a, visualisationReference.yDimension);
                }
                else if (visualisationReference.yDimension.Attribute != "Undefined")
                {
                    Vector3 pos = Vector3.zero;
                    pos.x  = -0.025f;
                    Y_AXIS = CreateAxis(propertyType, visualisationReference.yDimension, pos, new Vector3(0f, 0f, 0f), 1);
                }
                break;

            case AbstractVisualisation.PropertyType.Z:
                if (visualisationReference.zDimension.Attribute == "Undefined" && Z_AXIS != null)
                {
                    DestroyImmediate(Z_AXIS);
                }
                else if (Z_AXIS != null)
                {
                    Axis a = Z_AXIS.GetComponent <Axis>();
                    a.Initialise(visualisationReference.dataSource, visualisationReference.zDimension, visualisationReference);
                    BindMinMaxAxisValues(Z_AXIS.GetComponent <Axis>(), visualisationReference.zDimension);
                }
                else if (visualisationReference.zDimension.Attribute != "Undefined")
                {
                    Vector3 pos = Vector3.zero;
                    pos.y  = -0.025f;
                    pos.x  = -0.025f;
                    Z_AXIS = CreateAxis(propertyType, visualisationReference.zDimension, pos, new Vector3(90f, 0f, 0f), 2);
                }
                break;

            case AbstractVisualisation.PropertyType.DimensionFiltering:
                if (visualisationReference.xDimension.Attribute != "Undefined")
                {
                    BindMinMaxAxisValues(X_AXIS.GetComponent <Axis>(), visualisationReference.xDimension);
                }
                if (visualisationReference.yDimension.Attribute != "Undefined")
                {
                    BindMinMaxAxisValues(Y_AXIS.GetComponent <Axis>(), visualisationReference.yDimension);
                }
                if (visualisationReference.zDimension.Attribute != "Undefined")
                {
                    BindMinMaxAxisValues(Z_AXIS.GetComponent <Axis>(), visualisationReference.zDimension);
                }
                break;

            case AbstractVisualisation.PropertyType.Scaling:
                if (visualisationReference.xDimension.Attribute != "Undefined")
                {
                    Axis axis = X_AXIS.GetComponent <Axis>();
                    BindMinMaxAxisValues(axis, visualisationReference.xDimension);
                    axis.UpdateLength(visualisationReference.width);
                }
                if (visualisationReference.yDimension.Attribute != "Undefined")
                {
                    Axis axis = Y_AXIS.GetComponent <Axis>();
                    BindMinMaxAxisValues(axis, visualisationReference.yDimension);
                    axis.UpdateLength(visualisationReference.height);
                }
                if (visualisationReference.zDimension.Attribute != "Undefined")
                {
                    Axis axis = Z_AXIS.GetComponent <Axis>();
                    BindMinMaxAxisValues(axis, visualisationReference.zDimension);
                    axis.UpdateLength(visualisationReference.depth);
                }

                rescaleViews();
                break;

            default:
                break;
            }
        }