diff --git a/ui-react/package.json b/ui-react/package.json
index de7cb26..9c94ccc 100644
--- a/ui-react/package.json
+++ b/ui-react/package.json
@@ -13,7 +13,7 @@
   "author": "ONAP Clamp Team",
   "license": "Apache-2.0",
   "dependencies": {
-    "@json-editor/json-editor": "1.3.5",
+    "@json-editor/json-editor": "1.4.0-beta.0",
     "react": "16.8.0",
     "react-dom": "16.8.0",
     "react-scripts": "3.0.1",
diff --git a/ui-react/src/LoopUI.js b/ui-react/src/LoopUI.js
index 5b8283f..b64cfba 100644
--- a/ui-react/src/LoopUI.js
+++ b/ui-react/src/LoopUI.js
@@ -41,9 +41,9 @@
 import LoopProperties from './components/dialogs/LoopProperties';
 import UserInfo from './components/dialogs/UserInfo';
 import LoopService from './api/LoopService';
-import PerformAction from './components/menu/PerformActions';
-import RefreshStatus from './components/menu/RefreshStatus';
-import DeployLoop from './components/menu/DeployLoop';
+import PerformAction from './components/dialogs/PerformActions';
+import RefreshStatus from './components/dialogs/RefreshStatus';
+import DeployLoop from './components/dialogs/DeployLoop';
 
 const ProjectNameStyled = styled.a`
 	vertical-align: middle;
@@ -185,6 +185,7 @@
 		this.setState({ loopCache: new LoopCache({}), loopName: LoopUI.defaultLoopName });
 		this.props.history.push('/');
 	}
+	
  render() {
 		return (
 				<div id="main_div">
diff --git a/ui-react/src/api/LoopCache.js b/ui-react/src/api/LoopCache.js
index 3ee5acc..d83e3ce 100644
--- a/ui-react/src/api/LoopCache.js
+++ b/ui-react/src/api/LoopCache.js
@@ -51,6 +51,10 @@
 	getOperationalPolicyConfigurationJson() {
 		return this.loopJsonCache["operationalPolicies"]["0"]["configurationsJson"];
 	}
+	
+	getOperationalPolicyJsonSchema() {
+		return this.loopJsonCache["operationalPolicySchema"];
+	}
 
 	getOperationalPolicies() {
 		return this.loopJsonCache["operationalPolicies"];
diff --git a/ui-react/src/api/LoopService.js b/ui-react/src/api/LoopService.js
index 031ec63..eece20c 100644
--- a/ui-react/src/api/LoopService.js
+++ b/ui-react/src/api/LoopService.js
@@ -104,6 +104,30 @@
 				return "";
 			});
 	}
+	
+	static setOperationalPolicyProperties(loopName, jsonData) {
+		return fetch('/restservices/clds/v2/loop/updateOperationalPolicies/' + loopName, {
+			method: 'POST',
+			credentials: 'same-origin',
+			headers: {
+				"Content-Type": "application/json",
+			},
+			body: JSON.stringify(jsonData),
+		})
+			.then(function (response) {
+				console.debug("updateOperationalPolicies response received: ", response.status);
+				if (response.ok) {
+					return response.text();
+				} else {
+					console.error("updateOperationalPolicies query failed");
+					return "";
+				}
+			})
+			.catch(function (error) {
+				console.error("updateOperationalPolicies error received", error);
+				return "";
+			});
+	}
 
 	static updateGlobalProperties(loopName, jsonData) {
 		return fetch('/restservices/clds/v2/loop/updateGlobalProperties/' + loopName, {
diff --git a/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js b/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js
index 4fbb783..9863ef7 100644
--- a/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js
+++ b/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js
@@ -103,7 +103,7 @@
 
 	render() {
 		return (
-			<ModalStyled size="lg" show={this.state.show} onHide={this.handleClose}>
+			<ModalStyled size="xl" show={this.state.show} onHide={this.handleClose}>
 				<Modal.Header closeButton>
 					<Modal.Title>Configuration policies</Modal.Title>
 				</Modal.Header>
diff --git a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js
index 2a812c8..6db38fd 100644
--- a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js
+++ b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js
@@ -24,8 +24,9 @@
 import React from 'react'
 import Button from 'react-bootstrap/Button';
 import Modal from 'react-bootstrap/Modal';
-import './OperationalPolicy.css'
 import styled from 'styled-components';
+import LoopService from '../../../api/LoopService';
+import JSONEditor from '@json-editor/json-editor';
 
 const ModalStyled = styled(Modal)`
 	background-color: transparent;
@@ -36,512 +37,94 @@
 	state = {
 		show: true,
 		loopCache: this.props.loopCache,
+		jsonEditor: null,
 	};
 
-	allPolicies = [];
-	policyIds = [];
-
 	constructor(props, context) {
 		super(props, context);
-
 		this.handleClose = this.handleClose.bind(this);
-		this.initPolicySelect = this.initPolicySelect.bind(this);
-		this.initPolicySelect();
+		this.handleSave = this.handleSave.bind(this);
+		this.renderJsonEditor = this.renderJsonEditor.bind(this);
+		this.setDefaultJsonEditorOptions();
+	}
+
+	handleSave() {
+		var errors = this.state.jsonEditor.validate();
+		var editorData = this.state.jsonEditor.getValue();
+
+		if (errors.length !== 0) {
+			console.error("Errors detected during config policy data validation ", errors);
+			alert(errors);
+		}
+		else {
+			console.info("NO validation errors found in config policy data");
+			this.state.loopCache.updateOperationalPolicyProperties(editorData);
+			LoopService.setOperationalPolicyProperties(this.state.loopCache.getLoopName(), this.state.loopCache.getOperationalPolicies()).then(resp => {
+				this.setState({ show: false });
+				this.props.history.push('/');
+				this.props.loadLoopFunction(this.state.loopCache.getLoopName());
+			});
+		}
 	}
 
 	handleClose() {
 		this.setState({ show: false });
-		this.props.history.push('/')
+		this.props.history.push('/');
 	}
 
-	initPolicySelect() {
-		if (this.allPolicies['operational_policy'] === undefined || this.allPolicies['operational_policy'] === null) {
-			this.allPolicies = this.state.loopCache.getOperationalPolicyConfigurationJson();
+	componentDidMount() {
+		this.renderJsonEditor();
+	}
+
+	setDefaultJsonEditorOptions() {
+		JSONEditor.defaults.options.theme = 'bootstrap4';
+		// JSONEditor.defaults.options.iconlib = 'bootstrap2';
+
+		JSONEditor.defaults.options.object_layout = 'grid';
+		JSONEditor.defaults.options.disable_properties = true;
+		JSONEditor.defaults.options.disable_edit_json = false;
+		JSONEditor.defaults.options.disable_array_reorder = true;
+		JSONEditor.defaults.options.disable_array_delete_last_row = true;
+		JSONEditor.defaults.options.disable_array_delete_all_rows = false;
+		JSONEditor.defaults.options.array_controls_top=true;
+		JSONEditor.defaults.options.show_errors = 'always';
+		JSONEditor.defaults.options.keep_oneof_values=false;
+		JSONEditor.defaults.options.ajax=true;
+		JSONEditor.defaults.options.collapsed=true;
+		//JSONEditor.defaults.options.template = 'default';
+	}
+	
+	renderJsonEditor() {
+		console.debug("Rendering OperationalPolicyModal");
+		var schema_json = this.state.loopCache.getOperationalPolicyJsonSchema();
+		
+		if (schema_json == null) {
+			console.error("NO Operational policy schema found");
+			return;
 		}
-		// Provision all policies ID first
-		if (this.policyIds.length === 0 && this.allPolicies['operational_policy'] !== undefined) {
+		var operationalPoliciesData = this.state.loopCache.getOperationalPolicies();
 
-			for (let i = 0; i < this.allPolicies['operational_policy']['policies'].length; i++) {
-				this.policyIds.push(this.allPolicies['operational_policy']['policies'][i]['id']);
-			}
-		}
-	}
-
-	renderPolicyIdSelect() {
-		return (
-			<select type="text" id="trigger_policy" name="trigger_policy"
-				className="form-control">
-				<option value="">-- choose an option --</option>
-				{this.policyIds.map(policyId => (<option key={policyId}>{policyId}</option>))}
-			</select>
-		);
-	}
-
-	serializeElement(element) {
-		var o = {};
-		element.serializeArray().forEach(function () {
-			if (o[this.name]) {
-				if (!o[this.name].push) {
-					o[this.name] = [o[this.name]];
-				}
-				o[this.name].push(this.value || '');
-			} else {
-				o[this.name] = this.value || '';
-			}
-		});
-		return o;
-	}
-
-	// When we change the name of a policy
-	isDuplicatedId(event) {
-		// update policy id structure
-		var formNum = document.getElementById(event.target).closest('.formId').attr('id').substring(6);
-		var policyId = document.getElementById(event.target).val();
-		if (this.policyIds.includes(policyId)) {
-			console.log("Duplicated ID, cannot proceed");
-			return true;
-		} else {
-			this.duplicated = false;
-			this.policyIds.splice(this.policyIds.indexOf(document.getElementById("#formId" + formNum + " #id").val()), 1);
-			this.policyIds.push(document.getElementById(event.target).val());
-			// Update the tab now
-			document.getElementById("#go_properties_tab" + formNum).text(document.getElementById(event.target).val());
-		}
-	}
-
-	configureComponents() {
-		console.log("Load properties to op policy");
-		// Set the header
-		document.getElementsByClassName('form-control').forEach(function () {
-			this.val(this.allPolicies['operational_policy']['controlLoop'][this.id]);
-		});
-		// Set the sub-policies
-		this.allPolicies['operational_policy']['policies'].forEach(function (opPolicyElemIndex, opPolicyElemValue) {
-
-			/*			    var formNum = add_one_more();
-							forEach(document.getElementsByClassName('policyProperties').find('.form-control'), function(opPolicyPropIndex, opPolicyPropValue) {
-			
-								$("#formId" + formNum + " .policyProperties").find("#" + opPolicyPropValue.id).val(
-								allPolicies['operational_policy']['policies'][opPolicyElemIndex][opPolicyPropValue.id]);
-							});
-			
-							// Initial TargetResourceId options
-							initTargetResourceIdOptions(allPolicies['operational_policy']['policies'][opPolicyElemIndex]['target']['type'], formNum);
-							$.each($('.policyTarget').find('.form-control'), function(opPolicyTargetPropIndex, opPolicyTargetPropValue) {
-			
-								$("#formId" + formNum + " .policyTarget").find("#" + opPolicyTargetPropValue.id).val(
-								allPolicies['operational_policy']['policies'][opPolicyElemIndex]['target'][opPolicyTargetPropValue.id]);
-							});
-			
-							// update the current tab label
-							$("#go_properties_tab" + formNum).text(
-							allPolicies['operational_policy']['policies'][opPolicyElemIndex]['id']);
-							// Check if there is a guard set for it
-							$.each(allPolicies['guard_policies'], function(guardElemId, guardElemValue) {
-			
-								if (guardElemValue.recipe === $($("#formId" + formNum + " #recipe")[0]).val()) {
-									// Found one, set all guard prop
-									$.each($('.guardProperties').find('.form-control'), function(guardPropElemIndex,
-																								 guardPropElemValue) {
-			
-										guardElemValue['id'] = guardElemId;
-										$("#formId" + formNum + " .guardProperties").find("#" + guardPropElemValue.id).val(
-										guardElemValue[guardPropElemValue.id]);
-									});
-									iniGuardPolicyType(guardElemId, formNum);
-									// And finally enable the flag
-									$("#formId" + formNum + " #enableGuardPolicy").prop("checked", true);
-								}
-							});*/
-		});
+		this.setState({
+				jsonEditor: new JSONEditor(document.getElementById("editor"),
+					{ schema: schema_json.schema, startval: operationalPoliciesData })
+			})
 	}
 
 	render() {
 		return (
-			<ModalStyled size="lg" show={this.state.show} onHide={this.handleClose}>
+			<ModalStyled size="xl" show={this.state.show} onHide={this.handleClose}>
 				<Modal.Header closeButton>
 					<Modal.Title>Operational policies</Modal.Title>
 				</Modal.Header>
 				<Modal.Body>
-					<div attribute-test="policywindowproperties" id="configure-widgets"
-						className="disabled-block-container">
-						<div attribute-test="policywindowpropertiesb" className="modal-body row">
-							<div className="panel panel-default col-sm-10 policyPanel">
-								<form id="operationalPolicyHeaderForm" className="form-horizontal">
-									<div className="form-group clearfix">
-										<label className="col-sm-2">Parent policy</label>
-										<div className="col-sm-3" style={{ padding: '0px' }}>
-											{this.renderPolicyIdSelect()}
-										</div>
-
-										<label htmlFor="timeout" className="col-sm-3"
-											style={{ paddingLeft: '5px', paddingRight: '10px' }}>Overall
-	        									Time Limit</label>
-										<div className="col-sm-2" style={{ paddingLeft: '0px' }}>
-											<input type="text" ng-pattern="/^[0-9]*$/" ng-model="number"
-												className="form-control" id="timeout" name="timeout" />
-										</div>
-
-										<label htmlFor="abatement" className="col-sm-2">Abatement</label>
-										<div className="col-sm-2" style={{ paddingLeft: '0px' }}>
-											<select className="form-control" id="abatement" name="abatement">
-												<option value="false">False</option>
-												<option value="true">True</option>
-											</select>
-										</div>
-									</div>
-									<div className="form-group clearfix row">
-										<label className="col-sm-4 control-label" htmlFor="clname">ControlLoopName</label>
-										<div className="col-sm-8">
-											<input type="text" className="form-control" name="controlLoopName"
-												readOnly="readonly" id="clname" value={this.state.loopCache.getLoopName()} />
-										</div>
-									</div>
-								</form>
-								<div className="panel-heading" style={{ backgroundColor: 'white' }}>
-									<ul id="nav_Tabs" className="nav nav-tabs">
-										<li>
-											<a id="add_one_more" href="#desc_tab">
-												<span
-													className="glyphicon glyphicon-plus" aria-hidden="true">
-												</span>
-											</a>
-										</li>
-									</ul>
-								</div>
-								<div className="panel-body">
-									<div className="tab-content">
-										<div id="properties_tab" className="tab-pane fade in active"></div>
-									</div>
-								</div>
-							</div>
-
-							<span id="formSpan" style={{ display: 'none' }}>
-								<form className="policyProperties form-horizontal"
-									style={{ border: '2px dotted gray' }}
-									title="Operational Policy Properties">
-									<div className="form-group clearfix">
-										<label className="col-sm-4 control-label" htmlFor="id">ID</label>
-										<div className="col-sm-8">
-											<input type="text" className="form-control" name="id" id="id"
-												onKeyUp="updateTabLabel($event)" />
-											<span >ID must be unique</span>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label className="col-sm-4 control-label" htmlFor="recipe">Recipe</label>
-										<div className="col-sm-8">
-											<select className="form-control" name="recipe" id="recipe"
-												ng-model="recipe" ng-click="updateGuardRecipe($event)">
-												<option value="">-- choose an option --</option>
-												<option value="Restart">Restart</option>
-												<option value="Rebuild">Rebuild</option>
-												<option value="Migrate">Migrate</option>
-												<option value="Health-Check">Health-Check</option>
-												<option value="ModifyConfig">ModifyConfig</option>
-												<option value="VF Module Create">VF Module Create</option>
-												<option value="VF Module Delete">VF Module Delete</option>
-												<option value="Reroute">Reroute</option>
-											</select>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="retry" className="col-sm-4 control-label"> Retry</label>
-										<div className="col-sm-8">
-											<input type="text" maxLength="5" className="form-control" id="retry"
-												ng-pattern="/^[0-9]*$/" ng-model="number" name="retry">
-											</input>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="timeout" className="col-sm-4 control-label">
-											Timeout</label>
-										<div className="col-sm-8">
-											<input type="text" maxLength="5" className="form-control"
-												id="timeout" ng-pattern="/^[0-9]*$/" ng-model="number"
-												name="timeout"></input>
-										</div>
-									</div>
-
-									<div className="form-group clearfix">
-										<label htmlFor="actor" className="col-sm-4 control-label"> Actor</label>
-										<div className="col-sm-8">
-											<select className="form-control" id="actor" name="actor" ng-click="updateGuardActor($event)" ng-model="actor">
-												<option value="">-- choose an option --</option>
-												<option value="APPC">APPC</option>
-												<option value="SO">SO</option>
-												<option value="VFC">VFC</option>
-												<option value="SDNC">SDNC</option>°
-	        									<option value="SDNR">SDNR</option>°
-	        								</select>
-										</div>
-
-										<label htmlFor="payload" className="col-sm-4 control-label">
-											Payload (YAML)</label>
-										<div className="col-sm-8">
-											<textarea className="form-control" id="payload" name="payload"></textarea>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="success" className="col-sm-4 control-label">When
-	        								Success</label>
-										<div className="col-sm-8">
-											<select className="form-control" id="success" name="success"
-												ng-model="null_dump"
-												ng-options="policy for policy in policy_ids track by policy">
-												<option value="">-- choose an option --</option>
-											</select>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="failure" className="col-sm-4 control-label">When
-	        								Failure</label>
-										<div className="col-sm-8">
-											<select className="form-control" id="failure" name="failure"
-												ng-model="null_dump"
-												ng-options="policy for policy in policy_ids track by policy">
-												<option value="">-- choose an option --</option>
-											</select>
-
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="failure_timeout" className="col-sm-4 control-label">When
-	        								Failure Timeout</label>
-										<div className="col-sm-8">
-											<select className="form-control" id="failure_timeout"
-												name="failure_timeout" ng-model="null_dump"
-												ng-options="policy for policy in policy_ids track by policy">
-												<option value="">-- choose an option --</option>
-											</select>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="failure_retries" className="col-sm-4 control-label">When
-	        								Failure Retries</label>
-										<div className="col-sm-8">
-											<select className="form-control" id="failure_retries"
-												name="failure_retries" ng-model="null_dump"
-												ng-options="policy for policy in policy_ids track by policy">
-												<option value="">-- choose an option --</option>
-											</select>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="failure_exception" className="col-sm-4 control-label">When
-	        								Failure Exception</label>
-										<div className="col-sm-8">
-											<select className="form-control" id="failure_exception"
-												name="failure_exception" ng-model="null_dump"
-												ng-options="policy for policy in policy_ids track by policy">
-												<option value="">-- choose an option --</option>
-											</select>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="failure_guard" className="col-sm-4 control-label">When
-	        								Failure Guard</label>
-										<div className="col-sm-8">
-											<select className="form-control" id="failure_guard"
-												name="failure_guard" ng-model="null_dump"
-												ng-options="policy for policy in policy_ids track by policy">
-												<option value="">-- choose an option --</option>
-											</select>
-										</div>
-									</div>
-								</form>
-								<form className="policyTarget form-horizontal"
-									title="Operational Policy Target" style={{ border: '2px dotted gray' }}>
-									<div className="form-group clearfix">
-										<label htmlFor="type" className="col-sm-4 control-label"> Target
-	        								Type</label>
-										<div className="col-sm-8">
-											<select className="form-control" name="type" id="type"
-												ng-click="initTargetResourceId($event)" ng-model="type">
-												<option value="">-- choose an option --</option>
-												<option value="VFMODULE">VFMODULE</option>
-												<option value="VM">VM</option>
-												<option value="VNF">VNF</option>
-											</select>
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="resourceID" className="col-sm-4 control-label">
-											Target ResourceId</label>
-										<div className="col-sm-8">
-											<select className="form-control" name="resourceID" id="resourceID"
-												ng-click="changeTargetResourceId($event)"
-												ng-model="resourceId">
-												<option value="">-- choose an option --</option>
-											</select>
-										</div>
-									</div>
-									<div id="metadata">
-										<div className="form-group clearfix">
-											<label htmlFor="modelInvariantId" className="col-sm-4 control-label">
-												Model Invariant Id</label>
-											<div className="col-sm-8">
-												<input className="form-control" name="modelInvariantId"
-													id="modelInvariantId" readOnly />
-											</div>
-										</div>
-										<div className="form-group clearfix">
-											<label htmlFor="modelVersionId" className="col-sm-4 control-label">
-												Model Version Id</label>
-											<div className="col-sm-8">
-												<input className="form-control" name="modelVersionId"
-													id="modelVersionId" readOnly />
-											</div>
-										</div>
-										<div className="form-group clearfix">
-											<label htmlFor="modelName" className="col-sm-4 control-label">
-												Model Name</label>
-											<div className="col-sm-8">
-												<input className="form-control" name="modelName" id="modelName"
-													readOnly />
-											</div>
-										</div>
-										<div className="form-group clearfix">
-											<label htmlFor="modelVersion" className="col-sm-4 control-label">
-												Model Version</label>
-											<div className="col-sm-8">
-												<input className="form-control" name="modelVersion"
-													id="modelVersion" readOnly />
-											</div>
-										</div>
-										<div className="form-group clearfix">
-											<label htmlFor="modelCustomizationId" className="col-sm-4 control-label">
-												Model Customization Id</label>
-											<div className="col-sm-8">
-												<input className="form-control" name="modelCustomizationId"
-													id="modelCustomizationId" readOnly />
-											</div>
-										</div>
-									</div>
-								</form>
-								<div className="form-group clearfix">
-									<label htmlFor="enableGuardPolicy" className="col-sm-4 control-label">
-										Enable Guard Policy</label>
-									<div className="col-sm-8">
-										<input type="checkbox" className="form-control"
-											name="enableGuardPolicy" id="enableGuardPolicy" />
-									</div>
-
-									<div className="col-sm-8">
-										<label htmlFor="guardPolicyType" className="col-sm-4 control-label">
-											Guard Policy Type</label> <select className="form-control"
-												name="guardPolicyType" id="guardPolicyType"
-												ng-click="changeGuardPolicyType()" ng-model="guardType">
-											<option value="GUARD_MIN_MAX">MinMax</option>
-											<option value="GUARD_YAML">FrequencyLimiter</option>
-										</select>
-									</div>
-								</div>
-								<form className="guardProperties form-horizontal"
-									title="Guard policy associated" style={{ border: '2px dotted gray' }}>
-
-									<div className="form-group clearfix withnote">
-										<label className="col-sm-4 control-label" htmlFor="id">Guard Policy ID</label>
-										<div className="col-sm-8">
-											<input type="text" className="form-control" name="id" id="id" ng-blur="changeGuardId()" ng-model="id" />
-										</div>
-									</div>
-									<div>
-										<label className="form-group note">Note: Prefix will be added to Guard Policy ID automatically based on Guard Policy Type</label>
-									</div>
-									<div className="form-group clearfix">
-										<label className="col-sm-4 control-label" htmlFor="recipe">Recipe</label>
-										<div className="col-sm-8">
-											<input type="text" className="form-control" name="recipe"
-												readOnly="readonly" id="recipe" />
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label className="col-sm-4 control-label" htmlFor="clname">ControlLoopName</label>
-										<div className="col-sm-8">
-											<input type="text" className="form-control" name="clname"
-												readOnly="readonly" id="clname" ng-model="clname" />
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="actor" className="col-sm-4 control-label">Actor</label>
-										<div className="col-sm-8">
-											<input type="text" className="form-control" name="actor"
-												readOnly="readonly" id="actor" />
-										</div>
-									</div>
-									<div className="form-group clearfix">
-
-										<label htmlFor="targets" className="col-sm-4 control-label">Guard
-	        								targets</label>
-										<div className="col-sm-8">
-											<input className="form-control" name="targets" id="targets" />
-										</div>
-									</div>
-
-									<div className="form-group clearfix" id="minMaxGuardPolicyDiv">
-										<label htmlFor="min" className="col-sm-4 control-label"> Min
-	        								Guard</label>
-										<div className="col-sm-8">
-											<input className="form-control" name="min" id="min" />
-										</div>
-										<label htmlFor="max" className="col-sm-4 control-label"> Max
-	        								Guard</label>
-										<div className="col-sm-8">
-											<input className="form-control" name="max" id="max" />
-										</div>
-									</div>
-									<div className="form-group clearfix"
-										id="frequencyLimiterGuardPolicyDiv" style={{ display: 'none' }}>
-										<label htmlFor="limit" className="col-sm-4 control-label">Limit</label>
-										<div className="col-sm-8">
-											<input className="form-control" name="limit" id="limit" />
-										</div>
-										<label htmlFor="timeUnits" className="col-sm-4 control-label">Time Units</label>
-										<div className="col-sm-8">
-											<select className="form-control" name="timeUnits"
-												id="timeUnits">
-												<option value=""></option>
-												<option value="minute">minute</option>
-												<option value="hour">hour</option>
-												<option value="day">day</option>
-												<option value="week">week</option>
-												<option value="month">month</option>
-												<option value="year">year</option>
-											</select>
-										</div>
-										<label htmlFor="timeWindow" className="col-sm-4 control-label">Time	Window</label>
-										<div className="col-sm-8">
-											<input className="form-control" name="timeWindow" id="timeWindow" />
-										</div>
-									</div>
-									<div className="form-group clearfix">
-										<label htmlFor="guardActiveStart" className="col-sm-4 control-label">
-											Guard Active Start</label>
-										<div className="col-sm-8">
-											<input className="form-control" name="guardActiveStart"
-												id="guardActiveStart" value="00:00:00Z" />
-										</div>
-										<label htmlFor="guardActiveEnd" className="col-sm-4 control-label">
-											Guard Active End</label>
-										<div className="col-sm-8">
-											<input className="form-control" name="guardActiveEnd"
-												id="guardActiveEnd" value="00:00:01Z" />
-										</div>
-									</div>
-
-								</form>
-
-							</span>
-						</div>
-					</div>
+					<div id="editor" />
 
 				</Modal.Body>
 				<Modal.Footer>
 					<Button variant="secondary" onClick={this.handleClose}>
 						Close
 	            </Button>
-					<Button variant="primary" onClick={this.handleClose}>
+					<Button variant="primary" onClick={this.handleSave}>
 						Save Changes
 	            </Button>
 				</Modal.Footer>
diff --git a/ui-react/src/index.js b/ui-react/src/index.js
index 39df364..cbbdc65 100644
--- a/ui-react/src/index.js
+++ b/ui-react/src/index.js
@@ -32,7 +32,7 @@
 	</BrowserRouter>
 );
 
-ReactDOM.render(
+export var mainClamp = ReactDOM.render(
 	routing,
 	document.getElementById('root')
 )
diff --git a/ui-react/src/theme/globalStyle.js b/ui-react/src/theme/globalStyle.js
index cbd86b1..0f6fb91 100644
--- a/ui-react/src/theme/globalStyle.js
+++ b/ui-react/src/theme/globalStyle.js
@@ -65,6 +65,19 @@
 	width: 100%;
 	height: 100%;
   }
+  
+  button {
+  	background-color: ${props => (props.theme.loopViewerHeaderBackgroundColor)};
+  	border: 1px;
+  	color: white;
+  	padding: 15px 32px;
+  	text-align: center;
+  	text-decoration: none;
+  	display: inline-block;
+  	font-size: ${props => props.theme.fontSize};
+  	font-family: ${props => props.theme.fontFamily};
+
+  }
 `
 
 export const DefaultClampTheme = {
