diff --git a/ui-react/src/components/app/LoopUI.js b/ui-react/src/LoopUI.js
similarity index 90%
rename from ui-react/src/components/app/LoopUI.js
rename to ui-react/src/LoopUI.js
index d058543..997f94b 100644
--- a/ui-react/src/components/app/LoopUI.js
+++ b/ui-react/src/LoopUI.js
@@ -23,15 +23,15 @@
 
 import React from 'react';
 import styled from 'styled-components';
-import MenuBar from '../menu/MenuBar';
+import MenuBar from './components/menu/MenuBar';
 import Navbar from 'react-bootstrap/Navbar';
 import logo from './logo.png';
-import { GlobalClampStyle } from '../../theme/globalStyle.js';
+import { GlobalClampStyle } from './theme/globalStyle.js';
 
-import ClosedLoopSvg from '../loop_viewer/svg/ClosedLoopSvg';
-import ClosedLoopLogs from '../loop_viewer/logs/ClosedLoopLogs';
-import ClosedLoopStatus from '../loop_viewer/status/ClosedLoopStatus';
-import UserService from '../backend_communication/UserService';
+import ClosedLoopSvg from './components/loop_viewer/svg/ClosedLoopSvg';
+import ClosedLoopLogs from './components/loop_viewer/logs/ClosedLoopLogs';
+import ClosedLoopStatus from './components/loop_viewer/status/ClosedLoopStatus';
+import UserService from './api/UserService';
 
 const ProjectNameStyled = styled.a`
 	vertical-align: middle;
@@ -80,7 +80,7 @@
 		super();
 		this.getUser = this.getUser.bind(this);
 	}
-
+	
  	componentDidMount() {
 		 this.getUser();
 	 }
diff --git a/ui-react/src/components/app/NotFound.js b/ui-react/src/NotFound.js
similarity index 100%
rename from ui-react/src/components/app/NotFound.js
rename to ui-react/src/NotFound.js
diff --git a/ui-react/src/OnapClamp.js b/ui-react/src/OnapClamp.js
index bdcea62..a8cc215 100644
--- a/ui-react/src/OnapClamp.js
+++ b/ui-react/src/OnapClamp.js
@@ -22,7 +22,7 @@
  */
 
 import React from 'react';
-import LoopUI from './components/app/LoopUI'
+import LoopUI from './LoopUI'
 import { ThemeProvider } from 'styled-components';
 import { DefaultClampTheme } from './theme/globalStyle.js';
 
diff --git a/ui-react/src/components/backend_communication/LoopActionService.js b/ui-react/src/api/LoopActionService.js
similarity index 100%
rename from ui-react/src/components/backend_communication/LoopActionService.js
rename to ui-react/src/api/LoopActionService.js
diff --git a/ui-react/src/components/backend_communication/LoopCache.js b/ui-react/src/api/LoopCache.js
similarity index 91%
rename from ui-react/src/components/backend_communication/LoopCache.js
rename to ui-react/src/api/LoopCache.js
index 2ef8396..80f02f0 100644
--- a/ui-react/src/components/backend_communication/LoopCache.js
+++ b/ui-react/src/api/LoopCache.js
@@ -20,10 +20,13 @@
  * ===================================================================
  * 
  */
+
 class LoopCache {
-	constructor() {
-		//this.loopJsonCache=loopJson;
-		this.loopJsonCache = require('./example.json'); //(with path)
+	loopJsonCache;
+
+	constructor(loopJson) {
+		this.loopJsonCache=loopJson;
+		//LoopCache.SET_LOOP_JSON_CACHE(require('./example.json');
 	}
 
 	updateMsProperties(type, newMsProperties) {
@@ -112,5 +115,15 @@
 		return this.loopJsonCache.components;
 	}
 
+	get getLoopJsonCache() {
+		return this.loopJsonCache;
+	}
+
+	set setLoopJsonCache(newJson) {
+		this.loopJsonCache = newJson;
+	}
 }
+
+export const LOOP_CACHE = new LoopCache(require('./example.json'));
+
 export default LoopCache;
diff --git a/ui-react/src/components/backend_communication/UserService.js b/ui-react/src/api/UserService.js
similarity index 100%
rename from ui-react/src/components/backend_communication/UserService.js
rename to ui-react/src/api/UserService.js
diff --git a/ui-react/src/components/backend_communication/example.json b/ui-react/src/api/example.json
similarity index 100%
rename from ui-react/src/components/backend_communication/example.json
rename to ui-react/src/api/example.json
diff --git a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js
index e52d930..7d33931 100644
--- a/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js
+++ b/ui-react/src/components/dialogs/OperationalPolicy/OperationalPolicyModal.js
@@ -24,7 +24,7 @@
 import React from 'react'
 import Button from 'react-bootstrap/Button';
 import Modal from 'react-bootstrap/Modal';
-import LoopCache from '../../backend_communication/LoopCache'
+import { LOOP_CACHE } from '../../../api/LoopCache'
 import './OperationalPolicy.css'
 import styled from 'styled-components';
 
@@ -37,8 +37,6 @@
 	constructor(props, context) {
 		super(props, context);
 
-		this.loopCache = new LoopCache();
-
 		this.handleClose = this.handleClose.bind(this);
 		this.initPolicySelect = this.initPolicySelect.bind(this);
 
@@ -59,7 +57,7 @@
 
 	initPolicySelect() {
 		if (this.allPolicies['operational_policy'] === undefined || this.allPolicies['operational_policy'] === null) {
-			this.allPolicies = this.loopCache.getOperationalPolicyProperty();
+			this.allPolicies = LOOP_CACHE.getOperationalPolicyProperty();
 		}
 		// Provision all policies ID first
 		if (this.policyIds.length == 0 && this.allPolicies['operational_policy'] != undefined) {
@@ -197,7 +195,7 @@
 										<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.loopCache.getLoopName()} />
+												readOnly="readonly" id="clname" value={LOOP_CACHE.getLoopName()} />
 										</div>
 									</div>
 								</form>
diff --git a/ui-react/src/components/app/logo.png b/ui-react/src/logo.png
similarity index 100%
rename from ui-react/src/components/app/logo.png
rename to ui-react/src/logo.png
Binary files differ
