protected override Config OnConfigure(Config defaultConfig, Config[] existingConfigs) {
			foreach (var item in defaultConfig.parameters.elementItem) {
				if (item.name == "AntishakerCrop") {
					item.any = new synesis.AntishakerCrop() {
						XOffs = -1, YOffs = 1, CropWidth = 2, CropHeight = 2
					}.Serialize();
				} else if (item.name == "UserRegion") {
					var rose = new synesis.Rose() { Left = true, UpLeft = true, Up = true, UpRight = true, Right = true, DownRight = true, Down = true, DownLeft = true };
					var points = new [] {
                     new synesis.Point() { X=-1,Y=-1 },
                     new synesis.Point() { X=-1,Y=1},
                     new synesis.Point() { X=1,Y=1 },
                     new synesis.Point() { X=1,Y=-1 }
               };
					item.any = new synesis.UserRegion() {
						Rose = rose, Points = points
					}.Serialize();
				} else if (item.name == "MarkerCalibration") {
					var heightMarker = new synesis.HeightMarker() {
						Height = 170,
						SurfaceNormals = new synesis.SurfaceNormal[] 
                        { 
                            new synesis.SurfaceNormal() { Height=0.4f, Point = new synesis.Point() {X=-0.5f,Y=-0.25f} } ,
                            new synesis.SurfaceNormal() { Height = 0.25f, Point = new synesis.Point() { X = 0.5f, Y = 0.5f } }
                        }
					};
					var heightMarkers = new synesis.HeightMarker[] { heightMarker };
					var heightMarkerCalibration = new synesis.HeightMarkerCalibration() { FocalLength = 9, MatrixFormat = synesis.MatrixFormat.Item13, HeightMarkers = heightMarkers };
					item.any = new synesis.MarkerCalibration() { Item = heightMarkerCalibration }.Serialize();
				}
			}

			foreach (var item in defaultConfig.parameters.simpleItem) {
				switch (item.name) {
					case "UseObjectTracker":
					item.value = DataConverter.BoolToString(true); break;
					case "StabilizationTime":
					item.value = DataConverter.IntToString(1000); break;
					case "MinObjectArea":
					item.value = DataConverter.FloatToString(0.1f); break;
					case "MaxObjectArea":
					item.value = DataConverter.FloatToString(10.0f); break;
					case "MaxObjectSpeed":
					item.value = DataConverter.FloatToString(20.0f); break;
					case "DisplacementSensitivity":
					item.value = DataConverter.IntToString(3); break;
					case "UseAntishaker":
					item.value = DataConverter.BoolToString(true); break;
					case "ContrastSensitivity":
					item.value = DataConverter.IntToString(7); break;
					case "ImageTooDark":
					item.value = DataConverter.BoolToString(true); break;
					case "ImageTooBlurry":
					item.value = DataConverter.BoolToString(true); break;
					case "ImageTooBright":
					item.value = DataConverter.BoolToString(true); break;
					case "CameraRedirected":
					item.value = DataConverter.BoolToString(true); break;
					case "CameraObstructed":
					item.value = DataConverter.BoolToString(true); break;
				}
			}





			return defaultConfig;
		}
        protected override Config OnConfigure(Config defaultConfig, Config[] existingConfigs)
        {
            foreach (var item in defaultConfig.parameters.elementItem)
            {
                if (item.name == "AntishakerCrop")
                {
                    item.any = new synesis.AntishakerCrop()
                    {
                        XOffs = -1, YOffs = 1, CropWidth = 2, CropHeight = 2
                    }.Serialize();
                }
                else if (item.name == "UserRegion")
                {
                    var rose = new synesis.Rose()
                    {
                        Left = true, UpLeft = true, Up = true, UpRight = true, Right = true, DownRight = true, Down = true, DownLeft = true
                    };
                    var points = new [] {
                        new synesis.Point()
                        {
                            X = -1, Y = -1
                        },
                        new synesis.Point()
                        {
                            X = -1, Y = 1
                        },
                        new synesis.Point()
                        {
                            X = 1, Y = 1
                        },
                        new synesis.Point()
                        {
                            X = 1, Y = -1
                        }
                    };
                    item.any = new synesis.UserRegion()
                    {
                        Rose = rose, Points = points
                    }.Serialize();
                }
                else if (item.name == "MarkerCalibration")
                {
                    var heightMarker = new synesis.HeightMarker()
                    {
                        Height         = 170,
                        SurfaceNormals = new synesis.SurfaceNormal[]
                        {
                            new synesis.SurfaceNormal()
                            {
                                Height = 0.4f, Point = new synesis.Point()
                                {
                                    X = -0.5f, Y = -0.25f
                                }
                            },
                            new synesis.SurfaceNormal()
                            {
                                Height = 0.25f, Point = new synesis.Point()
                                {
                                    X = 0.5f, Y = 0.5f
                                }
                            }
                        }
                    };
                    var heightMarkers           = new synesis.HeightMarker[] { heightMarker };
                    var heightMarkerCalibration = new synesis.HeightMarkerCalibration()
                    {
                        FocalLength = 9, MatrixFormat = synesis.MatrixFormat.Item13, HeightMarkers = heightMarkers
                    };
                    item.any = new synesis.MarkerCalibration()
                    {
                        Item = heightMarkerCalibration
                    }.Serialize();
                }
            }

            foreach (var item in defaultConfig.parameters.simpleItem)
            {
                switch (item.name)
                {
                case "UseObjectTracker":
                    item.value = DataConverter.BoolToString(true); break;

                case "StabilizationTime":
                    item.value = DataConverter.IntToString(1000); break;

                case "MinObjectArea":
                    item.value = DataConverter.FloatToString(0.1f); break;

                case "MaxObjectArea":
                    item.value = DataConverter.FloatToString(10.0f); break;

                case "MaxObjectSpeed":
                    item.value = DataConverter.FloatToString(20.0f); break;

                case "DisplacementSensitivity":
                    item.value = DataConverter.IntToString(3); break;

                case "UseAntishaker":
                    item.value = DataConverter.BoolToString(true); break;

                case "ContrastSensitivity":
                    item.value = DataConverter.IntToString(7); break;

                case "ImageTooDark":
                    item.value = DataConverter.BoolToString(true); break;

                case "ImageTooBlurry":
                    item.value = DataConverter.BoolToString(true); break;

                case "ImageTooBright":
                    item.value = DataConverter.BoolToString(true); break;

                case "CameraRedirected":
                    item.value = DataConverter.BoolToString(true); break;

                case "CameraObstructed":
                    item.value = DataConverter.BoolToString(true); break;
                }
            }



            return(defaultConfig);
        }