diff --git a/DISCLAIMER b/DISCLAIMER
new file mode 100644
index 0000000..8be5086
--- /dev/null
+++ b/DISCLAIMER
@@ -0,0 +1,10 @@
+Apache AGE is an effort undergoing incubation at
+The Apache Software Foundation (ASF), sponsored by Apache Incubator PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects.
+
+While incubation status is not necessarily a reflection of the completeness
+or stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
diff --git a/LICENSE b/LICENSE
index 261eeb9..062fa63 100644
--- a/LICENSE
+++ b/LICENSE
@@ -199,3 +199,27 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
+
+
+Portions of this project was developed by the Cytoscape project.
+License copied from /frontend/src/lib/cytoscape-cxtmenu/LICENSE:
+
+Copyright (c) 2016-2021, The Cytoscape Consortium.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the “Software”), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..52ae966
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,8 @@
+Apache AGE (incubating)
+Copyright 2021 The Apache Software Foundation.
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+
+Portions of Apache AGE were originally developed by Bitnine Co., Ltd. and were
+donated to the Apache Software Foundation. Copyright 2019-2020 Bitnine Co., Ltd.
diff --git a/README.md b/README.md
index 0ce67a5..0c40d83 100644
--- a/README.md
+++ b/README.md
@@ -5,19 +5,10 @@
 This is a sub-project of the Apache AGE (incubating) project.
 
 
-
 # Recommend Node Version & install module
 - node js 14.16.0
 - npm install pm2
 
-# How to use this image
-```
-docker run \
-    --publish=3001:3001 \
-    --name=agviewer \
-    bitnine/agviewer:latest
-```
-
 # How to run using command
 ```
 npm run setup
diff --git a/backend/src/app.js b/backend/src/app.js
index feddcdf..c236f82 100644
--- a/backend/src/app.js
+++ b/backend/src/app.js
@@ -29,7 +29,7 @@
 const {stream} = require('./config/winston');
 const cypherRouter = require('./routes/cypherRouter');
 const databaseRouter = require('./routes/databaseRouter');
-const agcloudRouter = require('./routes/agcloudRouter');
+const remoteLoginRouter = require('./routes/remoteLoginRouter');
 const sessionRouter = require('./routes/sessionRouter');
 const app = express();
 
@@ -59,7 +59,7 @@
 app.use(express.urlencoded({extended: false}));
 app.use(cookieParser());
 
-app.use('/agensviewer', sessionRouter, agcloudRouter);
+app.use('/agensviewer', sessionRouter, remoteLoginRouter);
 app.use('/api/v1/*', sessionRouter);
 app.use('/api/v1/cypher', cypherRouter);
 app.use('/api/v1/db', databaseRouter);
diff --git a/backend/src/controllers/agcloudController.js b/backend/src/controllers/RemoteLoginController.js
similarity index 95%
rename from backend/src/controllers/agcloudController.js
rename to backend/src/controllers/RemoteLoginController.js
index a1f7a3d..9969c0f 100644
--- a/backend/src/controllers/agcloudController.js
+++ b/backend/src/controllers/RemoteLoginController.js
@@ -22,7 +22,7 @@
 const winston = require('winston');
 const logger = winston.createLogger();
 
-class AgcloudController {
+class RemoteLoginController {
     async connectDatabase(req, res, next) {
         let databaseService = sessionService.get(req.sessionID);
         if (databaseService.isConnected() || !req.body) {
@@ -38,4 +38,4 @@
     }
 }
 
-module.exports = AgcloudController;
+module.exports = RemoteLoginController;
diff --git a/backend/src/models/agensgraph/agensGraphRepository.js b/backend/src/models/GraphRepository.js
similarity index 93%
rename from backend/src/models/agensgraph/agensGraphRepository.js
rename to backend/src/models/GraphRepository.js
index c70a448..b53c60c 100644
--- a/backend/src/models/agensgraph/agensGraphRepository.js
+++ b/backend/src/models/GraphRepository.js
@@ -17,16 +17,16 @@
  * under the License.
  */
 
-import Flavors from '../../config/Flavors';
-import PgConfig from '../../config/Pg'
+import Flavors from '../config/Flavors';
+import PgConfig from '../config/Pg'
 
 require('@bitnine-oss/ag-driver');
 import pg from 'pg';
 import types from 'pg-types';
-import {setAGETypes} from '../../tools/AGEParser';
+import {setAGETypes} from '../tools/AGEParser';
 
 
-class AgensGraphRepository {
+class GraphRepository {
     constructor({host, port, database, graph, user, password, flavor} = {}) {
         if (!flavor) {
             throw new Error('Flavor is required.');
@@ -97,7 +97,7 @@
      */
     async getConnection() {
         if (!this._pool) {
-            this._pool = AgensGraphRepository.newConnectionPool(this.getPoolConnectionInfo());
+            this._pool = GraphRepository.newConnectionPool(this.getPoolConnectionInfo());
         }
         const client = await this._pool.connect();
         if (this.flavor === 'AGE') {
@@ -158,4 +158,4 @@
     }
 }
 
-module.exports = AgensGraphRepository;
+module.exports = GraphRepository;
diff --git a/backend/src/routes/agcloudRouter.js b/backend/src/routes/remoteLoginRouter.js
similarity index 82%
rename from backend/src/routes/agcloudRouter.js
rename to backend/src/routes/remoteLoginRouter.js
index 60ca5f5..c99c09d 100644
--- a/backend/src/routes/agcloudRouter.js
+++ b/backend/src/routes/remoteLoginRouter.js
@@ -18,14 +18,14 @@
  */
 
 const express = require("express");
-const AgcloudController = require("../controllers/agcloudController");
+const RemoteLoginController = require("../controllers/RemoteLoginController");
 
 const router = express.Router();
-const agcloudController = new AgcloudController();
+const remoteLoginController = new RemoteLoginController();
 
 const {wrap} = require('../common/Routes');
 
 // Execute Cypher Query
-router.post("/", wrap(agcloudController.connectDatabase));
+router.post("/", wrap(remoteLoginController.connectDatabase));
 
 module.exports = router;
diff --git a/backend/src/services/databaseService.js b/backend/src/services/databaseService.js
index 4cfa3d6..bb7146d 100644
--- a/backend/src/services/databaseService.js
+++ b/backend/src/services/databaseService.js
@@ -19,8 +19,7 @@
 
 import {getQuery} from "../tools/SQLFlavorManager";
 import * as util from "util";
-
-const AgensGraphRepository = require('../models/agensgraph/agensGraphRepository');
+import GraphRepository from '../models/GraphRepository';
 
 class DatabaseService {
     constructor() {
@@ -97,7 +96,7 @@
     async connectDatabase(connectionInfo) {
         let agensDatabaseHelper = this._agensDatabaseHelper;
         if (agensDatabaseHelper == null) {
-            this._agensDatabaseHelper = new AgensGraphRepository(connectionInfo);
+            this._agensDatabaseHelper = new GraphRepository(connectionInfo);
             agensDatabaseHelper = this._agensDatabaseHelper;
         }
 
@@ -135,7 +134,7 @@
         }
 
         try {
-            let client = await AgensGraphRepository.getConnection(agensDatabaseHelper.getConnectionInfo());
+            let client = await GraphRepository.getConnection(agensDatabaseHelper.getConnectionInfo());
             client.release();
         } catch (err) {
             return false;
diff --git a/frontend/public/android-chrome-192x192.png b/frontend/public/android-chrome-192x192.png
deleted file mode 100644
index ea27441..0000000
--- a/frontend/public/android-chrome-192x192.png
+++ /dev/null
Binary files differ
diff --git a/frontend/public/android-chrome-512x512.png b/frontend/public/android-chrome-512x512.png
deleted file mode 100644
index 6c49a9c..0000000
--- a/frontend/public/android-chrome-512x512.png
+++ /dev/null
Binary files differ
diff --git a/frontend/public/apple-touch-icon.png b/frontend/public/apple-touch-icon.png
deleted file mode 100644
index b3f0053..0000000
--- a/frontend/public/apple-touch-icon.png
+++ /dev/null
Binary files differ
diff --git a/frontend/public/browserconfig.xml b/frontend/public/browserconfig.xml
deleted file mode 100644
index b903156..0000000
--- a/frontend/public/browserconfig.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<browserconfig>
-    <msapplication>
-        <tile>
-            <square150x150logo src="/mstile-150x150.png"/>
-            <TileColor>#da532c</TileColor>
-        </tile>
-    </msapplication>
-</browserconfig>
diff --git a/frontend/public/favicon-16x16.png b/frontend/public/favicon-16x16.png
deleted file mode 100644
index 74add82..0000000
--- a/frontend/public/favicon-16x16.png
+++ /dev/null
Binary files differ
diff --git a/frontend/public/favicon-32x32.png b/frontend/public/favicon-32x32.png
deleted file mode 100644
index 4def415..0000000
--- a/frontend/public/favicon-32x32.png
+++ /dev/null
Binary files differ
diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico
deleted file mode 100644
index 996e170..0000000
--- a/frontend/public/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/frontend/public/index.html b/frontend/public/index.html
index b9c1420..00f5770 100644
--- a/frontend/public/index.html
+++ b/frontend/public/index.html
@@ -21,18 +21,13 @@
 <html lang="en">
   <head>
     <meta charset="utf-8" />
-    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="theme-color" content="#000000" />
     <meta
       name="description"
       content="AGViewer"
     />
-    <link rel="apple-touch-icon" sizes="180x180" href="%PUBLIC_URL%/apple-touch-icon.png">
-    <link rel="icon" type="image/png" sizes="32x32" href="%PUBLIC_URL%/favicon-32x32.png">
-    <link rel="icon" type="image/png" sizes="16x16" href="%PUBLIC_URL%/favicon-16x16.png">
     <link rel="manifest" href="%PUBLIC_URL%/site.webmanifest">
-    <link rel="mask-icon" href="%PUBLIC_URL%/safari-pinned-tab.svg" color="#5bbad5">
     <meta name="msapplication-TileColor" content="#da532c">
     <meta name="theme-color" content="#ffffff">
     <title>AGViewer</title>
diff --git a/frontend/public/mstile-150x150.png b/frontend/public/mstile-150x150.png
deleted file mode 100644
index b998a5a..0000000
--- a/frontend/public/mstile-150x150.png
+++ /dev/null
Binary files differ
diff --git a/frontend/public/safari-pinned-tab.svg b/frontend/public/safari-pinned-tab.svg
deleted file mode 100644
index aa2742c..0000000
--- a/frontend/public/safari-pinned-tab.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!--
-  - Licensed to the Apache Software Foundation (ASF) under one
-  - or more contributor license agreements.  See the NOTICE file
-  - distributed with this work for additional information
-  - regarding copyright ownership.  The ASF licenses this file
-  - to you under the Apache License, Version 2.0 (the
-  - "License"); you may not use this file except in compliance
-  - with the License.  You may obtain a copy of the License at
-  -
-  - http://www.apache.org/licenses/LICENSE-2.0
-  -
-  - Unless required by applicable law or agreed to in writing,
-  - software distributed under the License is distributed on an
-  - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  - KIND, either express or implied.  See the License for the
-  - specific language governing permissions and limitations
-  - under the License.
-  -->
-
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="600.000000pt" height="600.000000pt" viewBox="0 0 600.000000 600.000000"
- preserveAspectRatio="xMidYMid meet">
-<metadata>
-Created by potrace 1.11, written by Peter Selinger 2001-2013
-</metadata>
-<g transform="translate(0.000000,600.000000) scale(0.100000,-0.100000)"
-fill="#000000" stroke="none">
-<path d="M4027 5966 c-32 -7 -60 -13 -63 -14 -2 0 -30 -6 -62 -12 -31 -7 -64
--15 -72 -18 -8 -3 -24 -7 -34 -9 -38 -7 -142 -35 -223 -59 -45 -14 -90 -27
--100 -29 -20 -4 -260 -82 -283 -92 -8 -3 -17 -7 -20 -8 -3 -1 -12 -4 -20 -8
--8 -3 -44 -16 -80 -28 -36 -13 -76 -29 -90 -36 -14 -7 -32 -13 -40 -13 -9 0
--20 -4 -25 -8 -6 -5 -26 -15 -45 -22 -19 -8 -57 -23 -85 -36 -27 -12 -72 -32
--100 -44 -105 -46 -323 -156 -393 -197 -41 -24 -76 -43 -79 -43 -24 0 -456
--287 -558 -372 -11 -9 -49 -39 -84 -67 -63 -50 -233 -204 -300 -272 -339 -342
--586 -724 -717 -1106 -20 -58 -38 -114 -39 -122 -2 -9 -4 -16 -5 -16 -2 0 -8
--22 -19 -75 -24 -109 -30 -139 -36 -190 -2 -25 -8 -67 -11 -95 -13 -101 -5
--428 11 -455 2 -3 6 -26 10 -50 7 -50 39 -178 56 -225 52 -142 103 -246 177
--359 25 -39 51 -76 57 -83 157 -178 195 -214 334 -313 121 -86 321 -181 451
--216 110 -29 224 -55 260 -60 25 -3 54 -8 65 -10 121 -23 436 -23 560 0 61 12
-100 19 105 21 3 1 23 5 45 10 73 15 239 76 326 121 47 24 90 44 97 44 7 0 12
-4 12 8 0 5 10 13 23 19 25 12 200 137 227 162 158 151 237 232 270 278 8 11
-36 49 63 82 26 34 47 66 47 71 0 6 4 10 8 10 20 0 183 290 264 470 49 108 129
-321 128 340 -1 3 -20 -34 -44 -82 -43 -84 -107 -189 -133 -216 -7 -7 -13 -16
--13 -20 0 -4 -21 -29 -46 -57 -25 -27 -48 -54 -52 -60 -15 -21 -177 -165 -187
--165 -3 0 -15 -9 -28 -20 -75 -65 -363 -193 -482 -214 -51 -9 -89 -16 -113
--21 -96 -22 -366 -25 -482 -6 -183 31 -360 100 -509 199 -30 21 -61 42 -69 47
--128 85 -300 290 -385 460 -36 72 -96 240 -102 285 -1 14 -8 43 -13 65 -17 62
--25 168 -26 305 0 161 8 237 48 429 13 61 61 213 93 295 35 91 121 277 133
-286 3 3 11 19 19 35 18 41 192 303 224 337 14 16 30 34 34 42 25 46 201 229
-316 329 50 44 211 169 263 205 72 48 160 104 196 123 24 13 50 29 58 35 39 31
-528 264 553 264 3 0 27 10 54 22 26 11 54 22 61 24 8 1 21 6 30 10 9 4 22 8
-27 10 11 3 251 83 275 92 8 3 20 6 26 7 6 2 38 11 70 20 33 9 69 19 81 21 12
-2 33 8 45 13 13 5 26 9 31 9 30 3 85 16 97 23 20 11 7 10 -63 -5z"/>
-<path d="M3737 4814 c-1 -1 -34 -5 -73 -8 -39 -3 -96 -11 -125 -17 -30 -6 -65
--12 -79 -15 -14 -3 -34 -8 -45 -11 -11 -4 -22 -7 -25 -8 -42 -9 -77 -19 -85
--24 -5 -3 -12 -6 -15 -6 -6 0 -56 -20 -110 -42 -86 -36 -230 -114 -275 -150
--5 -4 -29 -20 -52 -35 -81 -53 -211 -171 -313 -285 -86 -96 -100 -113 -100
--122 0 -5 -4 -11 -8 -13 -36 -14 -333 -504 -316 -521 3 -2 -2 -10 -11 -17 -8
--7 -15 -19 -15 -26 0 -8 -13 -42 -29 -76 -37 -79 -112 -300 -100 -292 5 3 9 9
-9 15 0 33 153 299 172 299 4 0 8 6 8 13 0 11 10 24 105 128 37 40 74 74 149
-137 42 35 158 108 233 145 77 39 258 103 317 111 21 4 41 8 45 10 3 2 30 7 60
-11 30 4 63 9 75 12 35 8 294 10 344 2 26 -4 69 -10 96 -13 27 -4 57 -11 68
--17 10 -5 18 -8 18 -5 0 4 92 -24 150 -47 294 -114 555 -352 693 -632 65 -133
-118 -316 133 -460 9 -81 8 -353 0 -405 -8 -47 -28 -161 -32 -181 -9 -54 -70
--254 -101 -332 -109 -280 -288 -570 -488 -795 -299 -335 -714 -615 -1225 -827
--63 -26 -124 -51 -135 -55 -23 -10 -227 -84 -235 -86 -3 0 -12 -3 -20 -7 -14
--5 -155 -48 -175 -53 -5 -1 -77 -21 -160 -43 -82 -23 -158 -42 -170 -42 -15
--1 -16 -2 -4 -6 10 -2 77 10 150 27 74 17 145 33 159 36 43 8 240 63 360 100
-126 39 132 41 142 43 10 2 87 30 113 42 23 10 173 65 225 82 19 6 38 16 42 22
-4 5 8 7 8 3 0 -11 280 114 465 208 138 70 230 121 293 160 29 19 55 34 58 34
-9 0 306 200 379 256 39 29 75 57 80 61 18 14 129 107 164 138 113 98 270 254
-342 340 19 21 41 46 49 55 8 9 29 33 45 54 17 21 38 48 49 60 10 11 29 37 42
-56 40 59 113 164 122 175 4 6 23 37 42 70 18 33 36 62 39 65 9 8 82 159 151
-315 25 56 80 229 95 298 2 10 6 26 9 35 5 15 8 32 21 107 20 115 27 193 28
-335 0 114 -9 266 -18 280 -2 3 -6 26 -10 50 -30 212 -166 517 -304 685 -61 73
--232 235 -291 275 -36 24 -67 46 -70 49 -22 26 -247 132 -358 170 -101 34
--283 76 -372 86 -30 3 -68 8 -85 12 -28 5 -313 11 -318 7z"/>
-</g>
-</svg>
diff --git a/frontend/public/site.webmanifest b/frontend/public/site.webmanifest
index 1a190be..d007297 100644
--- a/frontend/public/site.webmanifest
+++ b/frontend/public/site.webmanifest
@@ -1,18 +1,6 @@
 {
-    "name": "AGViewer",
-    "short_name": "AGViewer",
-    "icons": [
-        {
-            "src": "/android-chrome-192x192.png",
-            "sizes": "192x192",
-            "type": "image/png"
-        },
-        {
-            "src": "/android-chrome-512x512.png",
-            "sizes": "512x512",
-            "type": "image/png"
-        }
-    ],
+    "name": "Incubating Apache AGE Viewer",
+    "short_name": "Incubating AGE Viewer",
     "theme_color": "#ffffff",
     "background_color": "#ffffff",
     "display": "standalone"
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index abb1e8e..09ea03b 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -22,8 +22,6 @@
 import 'antd/dist/antd.css';
 import './static/style.css';
 import './static/navbar-fixed-left.css';
-import './static/google-Poppins.css';
-import './static/icons/css/fontello.css';
 import MainPage from './pages/Main/MainPage';
 
 const App = () => (
diff --git a/frontend/src/components/contents/presentations/Editor.jsx b/frontend/src/components/contents/presentations/Editor.jsx
index 0180431..3c14533 100644
--- a/frontend/src/components/contents/presentations/Editor.jsx
+++ b/frontend/src/components/contents/presentations/Editor.jsx
@@ -21,10 +21,13 @@
 import { useDispatch } from 'react-redux';
 import uuid from 'react-uuid';
 import PropTypes from 'prop-types';
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { faTimesCircle } from '@fortawesome/free-solid-svg-icons';
 import AlertContainers from '../../alert/containers/AlertContainers';
 import CodeMirror from '../../editor/containers/CodeMirrorWapperContainer';
 import SideBarToggle from '../../editor/containers/SideBarMenuToggleContainer';
 import { setting } from '../../../conf/config';
+import IconPlay from '../../../icons/IconPlay';
 
 const Editor = ({
   setCommand,
@@ -147,7 +150,10 @@
                 />
               </button> */}
               <button className={command ? 'btn show-eraser' : 'btn hide-eraser'} type="button" id="eraser" onClick={() => clearCommand()}>
-                <i className="icon-eraser" />
+                <FontAwesomeIcon
+                  icon={faTimesCircle}
+                  size="1x"
+                />
               </button>
               <button
                 className="frame-head-button btn btn-link"
@@ -155,7 +161,7 @@
                 onClick={() => onClick()}
                 title="Run Query"
               >
-                <i className="icon-play" />
+                <IconPlay />
               </button>
               <button
                 className="frame-head-button btn btn-link"
diff --git a/frontend/src/components/cypherresult/containers/CypherResultCytoscapeContainer.js b/frontend/src/components/cypherresult/containers/CypherResultCytoscapeContainer.js
index db25621..b2211d1 100644
--- a/frontend/src/components/cypherresult/containers/CypherResultCytoscapeContainer.js
+++ b/frontend/src/components/cypherresult/containers/CypherResultCytoscapeContainer.js
@@ -50,6 +50,8 @@
     maxDataOfGraph: state.setting.maxDataOfGraph,
     maxDataOfTable: state.setting.maxDataOfTable,
     setChartLegend: ownProps.setChartLegend,
+    flavor: state.database.flavor,
+    graph: state.database.graph,
   };
 };
 
diff --git a/frontend/src/components/cypherresult/presentations/CypherResultCytoscape.jsx b/frontend/src/components/cypherresult/presentations/CypherResultCytoscape.jsx
index e358455..ad63e52 100644
--- a/frontend/src/components/cypherresult/presentations/CypherResultCytoscape.jsx
+++ b/frontend/src/components/cypherresult/presentations/CypherResultCytoscape.jsx
@@ -379,6 +379,8 @@
         cytoscapeLayout={cytoscapeLayout}
         addLegendData={addLegendData}
         maxDataOfGraph={maxDataOfGraph}
+        flavor={props.flavor}
+        graph={props.graph}
       />
       <CypherResultCytoscapeFooter
         captions={captions}
@@ -419,6 +421,8 @@
   setLabels: PropTypes.func.isRequired,
   refKey: PropTypes.string.isRequired,
   setChartLegend: PropTypes.func.isRequired,
+  flavor: PropTypes.string.isRequired,
+  graph: PropTypes.string.isRequired,
 };
 
 export default CypherResultCytoscape;
diff --git a/frontend/src/components/cytoscape/CypherResultCytoscapeChart.jsx b/frontend/src/components/cytoscape/CypherResultCytoscapeChart.jsx
index 7c0d760..ff4fd43 100644
--- a/frontend/src/components/cytoscape/CypherResultCytoscapeChart.jsx
+++ b/frontend/src/components/cytoscape/CypherResultCytoscapeChart.jsx
@@ -35,7 +35,7 @@
   faProjectDiagram,
   faWindowClose,
 } from '@fortawesome/free-solid-svg-icons';
-import cxtmenu from '../../lib/cytoscape-cxtmenu-bitnine';
+import cxtmenu from '../../lib/cytoscape-cxtmenu';
 import { initLocation, seletableLayouts } from './CytoscapeLayouts';
 import { stylesheet } from './CytoscapeStyleSheet';
 import { generateCytoscapeElement } from '../../features/cypher/CypherUtil';
@@ -52,7 +52,7 @@
 
 const CypherResultCytoscapeCharts = ({
   elements, cytoscapeObject, setCytoscapeObject, cytoscapeLayout, maxDataOfGraph,
-  onElementsMouseover, addLegendData,
+  onElementsMouseover, addLegendData, flavor, graph,
 }) => {
   const [cytoscapeMenu, setCytoscapeMenu] = useState(null);
   const [initialized, setInitialized] = useState(false);
@@ -164,19 +164,35 @@
               (<FontAwesomeIcon icon={faProjectDiagram} size="lg" />),
             ),
             select(ele) {
-              fetch('/api/v1/cypher',
-                {
-                  method: 'POST',
-                  headers: {
-                    Accept: 'application/json',
-                    'Content-Type': 'application/json',
-                  },
-                  body: JSON.stringify({ cmd: `MATCH (S)-[R]-(T) WHERE id(S) = '${ele.id()}' RETURN S, R, T` }),
-                })
-                .then((res) => res.json())
-                .then((data) => {
-                  addElements(ele.id(), data);
-                });
+              if (flavor === 'AGENS') {
+                fetch('/api/v1/cypher',
+                  {
+                    method: 'POST',
+                    headers: {
+                      Accept: 'application/json',
+                      'Content-Type': 'application/json',
+                    },
+                    body: JSON.stringify({ cmd: `MATCH (S)-[R]-(T) WHERE id(S) = '${ele.id()}' RETURN S, R, T` }),
+                  })
+                  .then((res) => res.json())
+                  .then((data) => {
+                    addElements(ele.id(), data);
+                  });
+              } else {
+                fetch('/api/v1/cypher',
+                  {
+                    method: 'POST',
+                    headers: {
+                      Accept: 'application/json',
+                      'Content-Type': 'application/json',
+                    },
+                    body: JSON.stringify({ cmd: `SELECT * FROM cypher('${graph}', $$ MATCH (S)-[R]-(T) WHERE id(S) = ${ele.id()} RETURN S, R, T $$) as (S agtype, R agtype, T agtype);` }),
+                  })
+                  .then((res) => res.json())
+                  .then((data) => {
+                    addElements(ele.id(), data);
+                  });
+              }
             },
           },
 
@@ -271,6 +287,8 @@
   maxDataOfGraph: PropTypes.number.isRequired,
   onElementsMouseover: PropTypes.func.isRequired,
   addLegendData: PropTypes.func.isRequired,
+  flavor: PropTypes.string.isRequired,
+  graph: PropTypes.string.isRequired,
 };
 
 export default CypherResultCytoscapeCharts;
diff --git a/frontend/src/components/cytoscape/CypherResultTab.jsx b/frontend/src/components/cytoscape/CypherResultTab.jsx
index 6d68a9b..e2e6285 100644
--- a/frontend/src/components/cytoscape/CypherResultTab.jsx
+++ b/frontend/src/components/cytoscape/CypherResultTab.jsx
@@ -22,6 +22,7 @@
 import PropTypes from 'prop-types';
 import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
 import { faTable } from '@fortawesome/free-solid-svg-icons';
+import IconGraph from '../../icons/IconGraph';
 
 class CypherResultTab extends Component {
   constructor(props) {
@@ -56,7 +57,7 @@
           style={{ width: '50%', fontSize: '14px', color: this.currentTab === 'graph' ? '#142B80' : '#495057' }}
           onClick={() => activeTab(this.refKey, 'graph')}
         >
-          <i className="icon-graph" style={{ fontSize: '25px' }} />
+          <IconGraph />
           <br />
           <b style={{ fontSize: '14px;' }}>Graph</b>
         </button>
diff --git a/frontend/src/components/frame/Frame.jsx b/frontend/src/components/frame/Frame.jsx
index ddfb700..aa585fa 100644
--- a/frontend/src/components/frame/Frame.jsx
+++ b/frontend/src/components/frame/Frame.jsx
@@ -27,6 +27,9 @@
 import { useDispatch } from 'react-redux';
 import styles from './Frame.module.scss';
 import { removeFrame } from '../../features/frame/FrameSlice';
+import EdgeWeight from '../../icons/EdgeWeight';
+import IconFilter from '../../icons/IconFilter';
+import IconSearchCancel from '../../icons/IconSearchCancel';
 
 const Frame = ({
   reqString, children, refKey,
@@ -71,7 +74,7 @@
                 title="Edge Weight"
                 onClick={() => onThick()}
               >
-                <i className="icon-edge-weight" />
+                <EdgeWeight />
               </Button>
             </Popover>
           ) : null }
@@ -83,7 +86,7 @@
               onClick={() => onSearchCancel()}
               title="Cancel Search"
             >
-              <i className="icon-search-cancel" />
+              <IconSearchCancel />
             </Button>
           ) : null}
           {onSearch ? (
@@ -94,7 +97,7 @@
               onClick={() => onSearch()}
               title="Filter/Search"
             >
-              <i className="icon-filter" />
+              <IconFilter />
             </Button>
           ) : null}
           {/* {false ? ( // en:Functionality is hidden due to */}
diff --git a/frontend/src/components/sidebar/containers/SidebarAbout.js b/frontend/src/components/sidebar/containers/SidebarAbout.js
deleted file mode 100644
index 64dca56..0000000
--- a/frontend/src/components/sidebar/containers/SidebarAbout.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import { connect } from 'react-redux';
-import SidebarAbout from '../presentations/SidebarAbout';
-
-const mapStateToProps = (state) => ({
-  releaseDate: state.setting.releaseDate,
-  version: state.setting.version,
-  license: state.setting.license,
-});
-
-const mapDispatchToProps = { };
-
-export default connect(mapStateToProps, mapDispatchToProps)(SidebarAbout);
diff --git a/frontend/src/components/sidebar/presentations/Sidebar.jsx b/frontend/src/components/sidebar/presentations/Sidebar.jsx
index a7c5771..ccb6d02 100644
--- a/frontend/src/components/sidebar/presentations/Sidebar.jsx
+++ b/frontend/src/components/sidebar/presentations/Sidebar.jsx
@@ -21,7 +21,6 @@
 import PropTypes from 'prop-types';
 import SidebarHome from '../containers/SidebarHome';
 import SidebarSetting from '../containers/SidebarSetting';
-import SidebarAbout from '../containers/SidebarAbout';
 
 const Sidebar = ({ activeMenuName, isActive }) => (
   <div id="sidebar" className={isActive ? ' active ' : 'inactive'}>
@@ -32,9 +31,6 @@
       <div className={`tab-pane fade${activeMenuName === 'setting' ? ' active show ' : ''}`} role="tabpanel" aria-labelledby="side-setting-tab">
         <SidebarSetting />
       </div>
-      <div className={`tab-pane fade${activeMenuName === 'about' ? ' active show ' : ''}`} role="tabpanel" aria-labelledby="side-about-tab">
-        <SidebarAbout />
-      </div>
     </div>
   </div>
 );
diff --git a/frontend/src/components/sidebar/presentations/SidebarAbout.jsx b/frontend/src/components/sidebar/presentations/SidebarAbout.jsx
deleted file mode 100644
index 7253ac4..0000000
--- a/frontend/src/components/sidebar/presentations/SidebarAbout.jsx
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { ColoredLine, SubLabelLeft, SubLabelRight } from './SidebarComponents';
-
-const SidebarAbout = ({ releaseDate, version, license }) => (
-  <div className="sidebar-setting">
-    <div className="sidebar sidebar-header">
-      <h4>About AGViewer</h4>
-    </div>
-    <div className="sidebar sidebar-body">
-      <div className="form-group">
-        <b>Made by Bitnine</b>
-        <ColoredLine />
-        <SubLabelLeft
-          label={(
-            <span>
-              Visit us at
-              <a target="_blank" rel="noopener noreferrer" href="http://bitnine.net"> Bitnine!</a>
-            </span>
-)}
-          classes="py-1"
-        />
-      </div>
-      <div className="form-group pt-4">
-        <b>Current AGViewer Version</b>
-        <ColoredLine />
-        <div>
-          <h6>
-            <div style={{ display: 'flex', flexWrap: 'wrap' }}>
-              <SubLabelRight label="AGViewer :" classes="col-sm-6" />
-              <SubLabelLeft label={version} classes="col-sm-6" />
-            </div>
-            <div style={{ display: 'flex', flexWrap: 'wrap' }}>
-              <SubLabelRight label="Released at :" classes="col-sm-6" />
-              <SubLabelLeft label={releaseDate} classes="col-sm-6" />
-            </div>
-            <div style={{ display: 'flex', flexWrap: 'wrap' }}>
-              <SubLabelRight label="License :" classes="col-sm-6" />
-              <SubLabelLeft label={license} classes="col-sm-6" />
-            </div>
-          </h6>
-        </div>
-      </div>
-      <div className="form-group pt-4">
-        <b>You Have Feedback for us?</b>
-        <ColoredLine />
-        <div style={{ display: 'flex', flexWrap: 'wrap' }}>
-          <SubLabelLeft
-            label={(
-              <span>
-                Leave your feedback at
-                <a target="_blank" rel="noopener noreferrer" href="https://github.com/bitnine-oss/AGViewer/issues"> Here!</a>
-                {' '}
-                <br />
-                Your feedback help us provide you better experience!
-              </span>
-)}
-            classes="py-1"
-          />
-        </div>
-      </div>
-
-    </div>
-  </div>
-);
-
-SidebarAbout.propTypes = {
-  releaseDate: PropTypes.string.isRequired,
-  version: PropTypes.string.isRequired,
-  license: PropTypes.string.isRequired,
-};
-
-export default SidebarAbout;
diff --git a/frontend/src/components/sidebar/presentations/SidebarHome.jsx b/frontend/src/components/sidebar/presentations/SidebarHome.jsx
index 78a84e5..6521585 100644
--- a/frontend/src/components/sidebar/presentations/SidebarHome.jsx
+++ b/frontend/src/components/sidebar/presentations/SidebarHome.jsx
@@ -23,6 +23,8 @@
 import { Modal } from 'antd';
 import uuid from 'react-uuid';
 import { connect, useDispatch } from 'react-redux';
+import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
+import { faRedo, faTimes } from '@fortawesome/free-solid-svg-icons';
 import { VerticalLine, SubLabelLeft, SubLabelRight } from './SidebarComponents';
 
 const genLabelQuery = (eleType, labelName, database) => {
@@ -353,11 +355,16 @@
         <VerticalLine />
         <div className="form-group sidebar-item-disconnect">
           <button
-            className="frame-head-button btn btn-link"
+            className="frame-head-button refresh_button btn btn-link"
             type="button"
             onClick={() => refreshSidebarHome()}
           >
-            <i className="icon-refresh" />
+            <FontAwesomeIcon
+              icon={faRedo}
+              size="1x"
+              color="white"
+              flip="horizontal"
+            />
           </button>
           <br />
           <b>Refresh</b>
@@ -370,8 +377,9 @@
           }}
           />
           <button
-            className="frame-head-button btn btn-link"
+            className="frame-head-button close_session btn btn-link"
             type="button"
+            color="#142B80"
             onClick={() => confirm({
               title: 'Are you sure you want to close this window?',
               onOk() {
@@ -382,7 +390,11 @@
               },
             })}
           >
-            <i className="icon-close-session" />
+            <FontAwesomeIcon
+              icon={faTimes}
+              size="1x"
+              color="white"
+            />
           </button>
           <br />
           <b>Close Session</b>
diff --git a/frontend/src/features/menu/MenuSlice.js b/frontend/src/features/menu/MenuSlice.js
index 7b99a3c..a59769e 100644
--- a/frontend/src/features/menu/MenuSlice.js
+++ b/frontend/src/features/menu/MenuSlice.js
@@ -19,12 +19,12 @@
 
 /* eslint-disable no-param-reassign */
 import { createSlice } from '@reduxjs/toolkit';
-import { faCog, faHome, faInfoCircle } from '@fortawesome/free-solid-svg-icons';
+import { faCog, faHome } from '@fortawesome/free-solid-svg-icons';
 
 const MenuSlice = createSlice({
   name: 'navigator',
   initialState: {
-    menuList: [['home', faHome], ['setting', faCog], ['about', faInfoCircle]],
+    menuList: [['home', faHome], ['setting', faCog]],
     activeMenu: 'home',
     isActive: true,
   },
diff --git a/frontend/src/icons/EdgeWeight.jsx b/frontend/src/icons/EdgeWeight.jsx
new file mode 100644
index 0000000..efce909
--- /dev/null
+++ b/frontend/src/icons/EdgeWeight.jsx
@@ -0,0 +1,11 @@
+import React from 'react';
+
+const EdgeWeight = (props) => (
+  // eslint-disable-next-line react/jsx-props-no-spreading
+  <svg fill="currentcolor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 32 32" {...props}>
+    <path
+      d="M0 15.68v2.72c0.063 0.51 0.494 0.901 1.017 0.901 0.036 0 0.072-0.002 0.108-0.006l-0.004 0h29.728c0.031 0.003 0.067 0.005 0.103 0.005 0.522 0 0.953-0.391 1.016-0.896l0-0.005v-2.72c-0.048-0.525-0.486-0.933-1.020-0.933-0.035 0-0.070 0.002-0.104 0.005l0.004-0h-29.728c-0.030-0.003-0.065-0.005-0.1-0.005-0.533 0-0.972 0.408-1.020 0.929l-0 0.004zM0.032 7.296v1.408c0.049 0.471 0.444 0.835 0.923 0.835 0.024 0 0.048-0.001 0.072-0.003l-0.003 0h29.984c0.021 0.002 0.045 0.003 0.069 0.003 0.48 0 0.874-0.364 0.923-0.831l0-0.004v-1.408c-0.064-0.456-0.451-0.803-0.92-0.803-0.026 0-0.051 0.001-0.076 0.003l0.003-0h-29.984c-0.022-0.002-0.047-0.003-0.072-0.003-0.468 0-0.856 0.347-0.919 0.798l-0.001 0.005zM0 26.432v4.544c0.064 0.581 0.553 1.029 1.145 1.029 0.036 0 0.072-0.002 0.107-0.005l-0.005 0h29.472c0.031 0.003 0.067 0.005 0.103 0.005 0.593 0 1.081-0.448 1.145-1.023l0-0.005v-4.544c-0.064-0.581-0.553-1.029-1.145-1.029-0.036 0-0.072 0.002-0.107 0.005l0.005-0h-29.472c-0.031-0.003-0.067-0.005-0.103-0.005-0.593 0-1.081 0.448-1.145 1.023l-0 0.005zM0 0.768v0.32c0.049 0.435 0.415 0.771 0.859 0.771 0.024 0 0.048-0.001 0.072-0.003l-0.003 0h30.112c0.021 0.002 0.045 0.003 0.069 0.003 0.444 0 0.81-0.335 0.859-0.767l0-0.004v-0.32c-0.049-0.435-0.415-0.771-0.859-0.771-0.024 0-0.048 0.001-0.072 0.003l0.003-0h-30.112c-0.021-0.002-0.045-0.003-0.069-0.003-0.444 0-0.81 0.335-0.859 0.767l-0 0.004z"
+    />
+  </svg>
+);
+export default EdgeWeight;
diff --git a/frontend/src/icons/IconFilter.jsx b/frontend/src/icons/IconFilter.jsx
new file mode 100644
index 0000000..a822e1d
--- /dev/null
+++ b/frontend/src/icons/IconFilter.jsx
@@ -0,0 +1,11 @@
+import React from 'react';
+
+const IconFilter = (props) => (
+  // eslint-disable-next-line react/jsx-props-no-spreading
+  <svg fill="currentcolor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 32 32" {...props}>
+    <path
+      d="M30.048 9.408c-0.352-0.192-0.704-0.352-1.12-0.416-1.408-0.256-2.944-0.512-4.448-0.736-0.608-0.064-1.248-0.096-1.888-0.128-0.288-0.032-0.544-0.032-0.832-0.064l-0.864-0.064v2.496l0.768 0.032c0.864 0 1.728 0.064 2.56 0.16-1.088 0.128-2.208 0.224-3.328 0.288-4.416 0.256-8.896 0.16-13.312-0.256 0.96-0.128 1.92-0.192 2.912-0.224l0.8-0.032-0.128-2.496-0.832 0.064c-0.448 0.032-0.896 0.064-1.344 0.096-0.992 0.096-2.016 0.16-3.008 0.32-1.184 0.16-2.336 0.448-3.488 0.8-0.8 0.224-1.088 0.704-1.184 1.056-0.096 0.384-0.096 0.96 0.544 1.664 3.488 3.84 6.976 7.712 10.432 11.552 0.064 0.064 0.064 0.128 0.096 0.224 0.032 1.792 0.032 3.424 0 4.896-0.096 0.864 0.352 1.696 1.12 2.112 0.8 0.416 1.664 0.768 2.56 1.056 0.576 0.128 1.152 0.192 1.728 0.192 0.096 0 0.192 0 0.32 0 0.448 0 1.568-0.16 1.568-1.664l0.032-1.152c0-1.76 0.032-3.52 0.032-5.312 0-0.16 0.032-0.352 0.192-0.512 3.488-3.84 6.976-7.68 10.432-11.52 0.192-0.16 0.288-0.32 0.384-0.512 0.32-0.736 0-1.568-0.704-1.92zM17.824 22.048c-0.384 0.384-0.576 0.928-0.576 1.44 0.032 1.312 0 2.656 0 3.968v2.112c-0.032 0-0.032-0.032-0.064-0.032-0.704-0.224-1.504-0.48-2.368-0.8v-0.096c0.032-1.728 0.032-3.488 0.032-5.248-0.032-0.448-0.192-0.896-0.512-1.248-2.72-3.040-5.44-6.080-8.192-9.088 6.592 0.672 13.248 0.672 19.84 0-0.288 0.32-0.576 0.64-0.864 0.96-2.464 2.688-4.864 5.376-7.296 8.032zM7.936 6.752c0 0 0 0 0 0 0.736 0 1.504-0.256 2.080-0.704l2.688 1.28c0 1.856 1.504 3.328 3.36 3.328s3.36-1.504 3.36-3.36c0-0.032 0-0.096 0-0.096l2.88-1.536c0.608 0.672 1.504 1.088 2.432 1.088 0 0 0 0 0 0 0.928 0 1.76-0.352 2.4-0.992s0.96-1.504 0.96-2.4c0-0.352-0.032-0.672-0.16-0.992-0.288-0.896-0.8-1.376-0.8-1.376-0.64-0.64-1.504-0.992-2.4-0.992 0 0 0 0 0 0-0.896 0-1.76 0.352-2.368 0.992s-0.992 1.504-0.992 2.368c0 0.032 0 0.064 0 0.096l-2.88 1.536c-0.64-0.672-1.504-1.056-2.432-1.056-0.992 0-1.92 0.416-2.528 1.12l-2.304-1.088c0.128-0.608 0.064-1.248-0.192-1.824-0.32-0.832-0.96-1.504-1.792-1.856-0.416-0.192-0.864-0.256-1.312-0.256-1.888 0-3.392 1.504-3.392 3.36s1.536 3.36 3.392 3.36zM7.936 2.432c0.544 0 0.96 0.416 0.96 0.96s-0.416 0.992-0.96 0.992c-0.544 0-0.992-0.448-0.992-0.992s0.448-0.96 0.992-0.96zM15.104 7.296c0-0.544 0.448-0.96 0.96-0.96 0.544 0 0.992 0.416 0.992 0.96s-0.448 0.992-0.992 0.992c-0.512-0.032-0.96-0.448-0.96-0.992zM25.728 3.36c0 0.256-0.064 0.48-0.224 0.64l-0.064 0.064c-0.192 0.192-0.416 0.288-0.704 0.288 0 0 0 0 0 0-0.512 0-0.96-0.448-0.96-0.992 0-0.512 0.448-0.96 0.96-0.96 0 0 0 0 0 0 0.576 0 0.992 0.448 0.992 0.96z"
+    />
+  </svg>
+);
+export default IconFilter;
diff --git a/frontend/src/icons/IconGraph.jsx b/frontend/src/icons/IconGraph.jsx
new file mode 100644
index 0000000..a368c33
--- /dev/null
+++ b/frontend/src/icons/IconGraph.jsx
@@ -0,0 +1,9 @@
+import React from 'react';
+
+const IconGraph = (props) => (
+  // eslint-disable-next-line react/jsx-props-no-spreading
+  <svg fill="currentcolor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 32 32" {...props}>
+    <path d="M27.488 10.464c2.464 0 4.48-2.016 4.48-4.48s-2.016-4.512-4.48-4.512-4.48 2.016-4.48 4.512c0 0.48 0.096 0.96 0.256 1.44l-3.84 2.912c-0.928-0.608-2.016-0.96-3.232-0.96-1.088 0-2.144 0.288-3.008 0.832l-3.296-3.84c0.256-0.576 0.416-1.184 0.416-1.856 0-2.496-2.016-4.512-4.512-4.512s-4.48 2.016-4.48 4.512 2.016 4.48 4.48 4.48c0.832 0 1.6-0.224 2.272-0.64l3.168 3.712c-0.576 0.928-0.928 2.016-0.928 3.2 0 0.64 0.096 1.248 0.288 1.824l-3.936 3.008c-0.64-0.384-1.376-0.608-2.176-0.608-2.496 0-4.512 2.016-4.512 4.512s2.016 4.48 4.512 4.48 4.48-2.016 4.48-4.48c0-0.704-0.16-1.344-0.448-1.952l3.488-2.656c1.088 1.088 2.56 1.76 4.192 1.76 0.864 0 1.664-0.16 2.368-0.48l3.648 4.224c-0.544 0.736-0.864 1.664-0.864 2.624 0 2.496 2.016 4.512 4.48 4.512s4.512-2.016 4.512-4.512-2.048-4.48-4.512-4.48c-0.512 0-0.992 0.096-1.472 0.256l-3.616-4.256c0.832-1.024 1.376-2.336 1.376-3.776 0-1.088-0.32-2.080-0.832-2.976l3.552-2.688c0.736 0.544 1.664 0.864 2.656 0.864zM27.488 4.16c0.992 0 1.792 0.832 1.792 1.824s-0.8 1.792-1.792 1.792-1.792-0.8-1.792-1.792 0.8-1.824 1.792-1.824zM5.792 6.304c-0.992 0-1.792-0.8-1.792-1.792s0.8-1.824 1.792-1.824 1.824 0.832 1.824 1.824-0.8 1.792-1.824 1.792zM4.48 25.792c-1.024 0-1.824-0.8-1.824-1.792s0.8-1.824 1.824-1.824 1.792 0.832 1.792 1.824-0.8 1.792-1.792 1.792zM16.192 18.464c-1.76 0-3.2-1.44-3.2-3.2s1.44-3.232 3.2-3.232 3.232 1.44 3.232 3.232-1.44 3.2-3.232 3.2zM25.824 25.728c0.992 0 1.792 0.8 1.792 1.792s-0.8 1.824-1.792 1.824c-0.992 0-1.824-0.832-1.824-1.824 0.032-0.992 0.832-1.792 1.824-1.792z" />
+  </svg>
+);
+export default IconGraph;
diff --git a/frontend/src/icons/IconPlay.jsx b/frontend/src/icons/IconPlay.jsx
new file mode 100644
index 0000000..a1b09cb
--- /dev/null
+++ b/frontend/src/icons/IconPlay.jsx
@@ -0,0 +1,9 @@
+import React from 'react';
+
+const IconPlay = (props) => (
+  // eslint-disable-next-line react/jsx-props-no-spreading
+  <svg fill="currentcolor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 32 32" {...props}>
+    <path d="M29.152 13.92c-0.352-0.576-0.864-1.056-1.376-1.408l-18.944-11.936c-1.248-0.736-2.816-0.768-4.128-0.032-1.28 0.736-2.080 2.080-2.080 3.552v23.776c0 1.472 0.8 2.848 2.080 3.616 0.608 0.352 1.312 0.512 2.016 0.512 0.032 0 0.032 0 0.032 0 0.736 0 1.44-0.16 2.144-0.576l18.816-11.872c1.952-1.184 2.592-3.68 1.44-5.632zM21.12 16.032l-12 7.584v-15.2l12 7.616z" />
+  </svg>
+);
+export default IconPlay;
diff --git a/frontend/src/icons/IconSearchCancel.jsx b/frontend/src/icons/IconSearchCancel.jsx
new file mode 100644
index 0000000..9a2b338
--- /dev/null
+++ b/frontend/src/icons/IconSearchCancel.jsx
@@ -0,0 +1,9 @@
+import React from 'react';
+
+const IconSearchCancel = (props) => (
+  // eslint-disable-next-line react/jsx-props-no-spreading
+  <svg fill="currentcolor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 32 32" {...props}>
+    <path d="M24.064 0c-1.85 0.008-3.346 1.509-3.346 3.36 0 0.204 0.018 0.403 0.053 0.596l-0.003-0.020-2.304 1.088c-0.611-0.699-1.501-1.141-2.494-1.152l-0.002-0c-0.995 0.011-1.885 0.453-2.493 1.148l-0.003 0.004-2.272-1.088c0.035-0.183 0.055-0.393 0.055-0.608 0-1.856-1.504-3.36-3.36-3.36s-3.36 1.504-3.36 3.36c0 1.847 1.491 3.347 3.335 3.36h0.001c0.006 0 0.014 0 0.022 0 0.779 0 1.496-0.265 2.066-0.71l-0.007 0.006 2.688 1.28c0.018 1.831 1.497 3.31 3.326 3.328h0.002c1.831-0.018 3.31-1.497 3.328-3.326v-0.002l2.688-1.28c0.562 0.439 1.279 0.704 2.058 0.704 0.008 0 0.015-0 0.023-0h-0.001c1.709-0.172 3.032-1.604 3.032-3.344s-1.323-3.172-3.018-3.343l-0.014-0.001zM7.872 4.32c-0.516-0.018-0.928-0.441-0.928-0.959 0-0.53 0.43-0.96 0.96-0.96s0.96 0.429 0.96 0.959v0c0 0 0 0 0 0.001 0 0.53-0.43 0.96-0.96 0.96-0.011 0-0.022-0-0.034-0.001l0.002 0zM15.968 8.192c-0.53 0-0.96-0.43-0.96-0.96s0.43-0.96 0.96-0.96c0.53 0 0.96 0.43 0.96 0.96v0 0c0 0.53-0.43 0.96-0.96 0.96v0zM24.064 4.32c-0.516-0.018-0.928-0.441-0.928-0.959 0-0.53 0.43-0.96 0.96-0.96s0.96 0.429 0.96 0.959v0c0 0 0 0 0 0.001 0 0.53-0.43 0.96-0.96 0.96-0.011 0-0.022-0-0.034-0.001l0.002 0zM26.496 17.76c-0.945-0.463-2.057-0.733-3.232-0.733-4.136 0-7.488 3.352-7.488 7.488s3.352 7.488 7.488 7.488c4.136 0 7.488-3.352 7.488-7.488 0-0.001 0-0.002 0-0.003v0c-0.001-2.96-1.719-5.518-4.212-6.732l-0.044-0.020zM28.064 27.968l-1.632 1.632-3.168-3.168-3.168 3.168-1.632-1.632 3.168-3.168-3.168-3.168 1.632-1.632 3.168 3.168 3.168-3.168 1.632 1.632-3.168 3.168zM13.536 24.512c-0-0.009-0-0.019-0-0.029 0-1.006 0.152-1.976 0.434-2.888l-0.018 0.069q-3.936-4.352-7.872-8.704c2.966 0.328 6.405 0.516 9.888 0.516s6.922-0.187 10.308-0.552l-0.42 0.037-0.864 0.96c-0.288 0.32-0.544 0.608-0.832 0.896 1.003 0.099 1.925 0.337 2.784 0.696l-0.064-0.024 3.392-3.712c0.152-0.149 0.272-0.331 0.349-0.534l0.003-0.010c0.072-0.168 0.114-0.364 0.114-0.569 0-0.575-0.33-1.073-0.81-1.315l-0.008-0.004c-0.323-0.191-0.698-0.335-1.098-0.412l-0.022-0.004c-1.408-0.256-2.912-0.512-4.416-0.736-0.64-0.064-1.28-0.096-1.888-0.128-0.288-0.032-0.544-0.032-0.832-0.064l-0.864-0.064v2.496h0.768q1.28 0.064 2.56 0.192c-1.088 0.096-2.208 0.224-3.328 0.256-1.557 0.102-3.376 0.16-5.209 0.16-2.842 0-5.652-0.139-8.422-0.411l0.351 0.028q1.44-0.192 2.912-0.224l0.8-0.032-0.096-2.496-0.864 0.064c-0.448 0.064-0.896 0.096-1.344 0.128-0.992 0.064-2.016 0.16-3.008 0.288-1.308 0.189-2.464 0.457-3.582 0.811l0.158-0.043c-0.565 0.128-1.010 0.541-1.181 1.077l-0.003 0.011c-0.027 0.113-0.043 0.244-0.043 0.378 0 0.496 0.213 0.943 0.553 1.253l0.001 0.001q5.216 5.76 10.4 11.52c0.040 0.057 0.065 0.127 0.065 0.203 0 0.007-0 0.015-0.001 0.022l0-0.001c0.032 1.792 0.032 3.424 0.032 4.896-0.009 0.073-0.014 0.158-0.014 0.244 0 0.791 0.441 1.479 1.091 1.831l0.011 0.005c0.716 0.378 1.563 0.736 2.442 1.023l0.118 0.033c0.237 0.063 0.53 0.119 0.829 0.156l0.035 0.004c-2.025-1.786-3.296-4.386-3.296-7.284 0-0.004 0-0.009 0-0.013v0.001z" />
+  </svg>
+);
+export default IconSearchCancel;
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/assign.js b/frontend/src/lib/cytoscape-cxtmenu-bitnine/assign.js
deleted file mode 100644
index 9842601..0000000
--- a/frontend/src/lib/cytoscape-cxtmenu-bitnine/assign.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* eslint-disable */
-// Simple, internal Object.assign() polyfill for options objects etc.
-
-module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt, ...srcs) {
-  srcs.filter((src) => src != null).forEach((src) => {
-    Object.keys(src).forEach((k) => tgt[k] = src[k]);
-  });
-
-  return tgt;
-};
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/core/index.js b/frontend/src/lib/cytoscape-cxtmenu-bitnine/core/index.js
deleted file mode 100644
index aa6c98c..0000000
--- a/frontend/src/lib/cytoscape-cxtmenu-bitnine/core/index.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* eslint-disable */
-module.exports = function () {
-  const cy = this;
-
-  // your extension impl...
-
-  return this; // chainability
-};
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/dom-util.js b/frontend/src/lib/cytoscape-cxtmenu-bitnine/dom-util.js
deleted file mode 100644
index 94276de..0000000
--- a/frontend/src/lib/cytoscape-cxtmenu-bitnine/dom-util.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* eslint-disable */
-const removeEles = function (query, ancestor = document) {
-  const els = ancestor.querySelectorAll(query);
-
-  for (let i = 0; i < els.length; i++) {
-    const el = els[i];
-
-    el.parentNode.removeChild(el);
-  }
-};
-
-const setStyles = function (el, style) {
-  const props = Object.keys(style);
-
-  for (let i = 0, l = props.length; i < l; i++) {
-    el.style[props[i]] = style[props[i]];
-  }
-};
-
-const createElement = function (options) {
-  options = options || {};
-
-  const el = document.createElement(options.tag || 'div');
-
-  el.className = options.class || '';
-
-  if (options.style) {
-    setStyles(el, options.style);
-  }
-
-  return el;
-};
-
-const getPixelRatio = function () {
-  return window.devicePixelRatio || 1;
-};
-
-const getOffset = function (el) {
-  const offset = el.getBoundingClientRect();
-
-  return {
-    left: offset.left + document.body.scrollLeft
-          + parseFloat(getComputedStyle(document.body)['padding-left'])
-          + parseFloat(getComputedStyle(document.body)['border-left-width']),
-    top: offset.top + document.body.scrollTop
-         + parseFloat(getComputedStyle(document.body)['padding-top'])
-         + parseFloat(getComputedStyle(document.body)['border-top-width']),
-  };
-};
-
-module.exports = {
-  removeEles, setStyles, createElement, getPixelRatio, getOffset,
-};
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/index.js b/frontend/src/lib/cytoscape-cxtmenu-bitnine/index.js
deleted file mode 100644
index cf92988..0000000
--- a/frontend/src/lib/cytoscape-cxtmenu-bitnine/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* eslint-disable */
-const cxtmenu = require('./cxtmenu');
-
-// registers the extension on a cytoscape lib ref
-const register = function (cytoscape) {
-  if (!cytoscape) { return; } // can't register if cytoscape unspecified
-
-  cytoscape('core', 'cxtmenu', cxtmenu); // register with cytoscape.js
-};
-
-if (typeof cytoscape !== 'undefined') { // expose to global cytoscape (i.e. window.cytoscape)
-  register(cytoscape);
-}
-
-module.exports = register;
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/LICENSE b/frontend/src/lib/cytoscape-cxtmenu/LICENSE
similarity index 100%
rename from frontend/src/lib/cytoscape-cxtmenu-bitnine/LICENSE
rename to frontend/src/lib/cytoscape-cxtmenu/LICENSE
diff --git a/frontend/src/lib/cytoscape-cxtmenu/assign.js b/frontend/src/lib/cytoscape-cxtmenu/assign.js
new file mode 100644
index 0000000..28d65c9
--- /dev/null
+++ b/frontend/src/lib/cytoscape-cxtmenu/assign.js
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2016-2020, The Cytoscape Consortium.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the “Software”), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/* eslint-disable */
+// Simple, internal Object.assign() polyfill for options objects etc.
+
+module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt, ...srcs) {
+  srcs.filter((src) => src != null).forEach((src) => {
+    Object.keys(src).forEach((k) => tgt[k] = src[k]);
+  });
+
+  return tgt;
+};
diff --git a/frontend/src/lib/cytoscape-cxtmenu/core/index.js b/frontend/src/lib/cytoscape-cxtmenu/core/index.js
new file mode 100644
index 0000000..ff6b27e
--- /dev/null
+++ b/frontend/src/lib/cytoscape-cxtmenu/core/index.js
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016-2020, The Cytoscape Consortium.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the “Software”), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/* eslint-disable */
+module.exports = function () {
+  const cy = this;
+
+  // your extension impl...
+
+  return this; // chainability
+};
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/cxtmenu.js b/frontend/src/lib/cytoscape-cxtmenu/cxtmenu.js
similarity index 92%
rename from frontend/src/lib/cytoscape-cxtmenu-bitnine/cxtmenu.js
rename to frontend/src/lib/cytoscape-cxtmenu/cxtmenu.js
index bfd7afb..9446f73 100644
--- a/frontend/src/lib/cytoscape-cxtmenu-bitnine/cxtmenu.js
+++ b/frontend/src/lib/cytoscape-cxtmenu/cxtmenu.js
@@ -1,20 +1,23 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
+ * Copyright (c) 2016-2020, The Cytoscape Consortium.
  *
- * http://www.apache.org/licenses/LICENSE-2.0
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the “Software”), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
  *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
  */
 
 /* eslint-disable */
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/defaults.js b/frontend/src/lib/cytoscape-cxtmenu/defaults.js
similarity index 64%
rename from frontend/src/lib/cytoscape-cxtmenu-bitnine/defaults.js
rename to frontend/src/lib/cytoscape-cxtmenu/defaults.js
index cc5ce79..ac9862f 100644
--- a/frontend/src/lib/cytoscape-cxtmenu-bitnine/defaults.js
+++ b/frontend/src/lib/cytoscape-cxtmenu/defaults.js
@@ -1,20 +1,23 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
+ * Copyright (c) 2016-2020, The Cytoscape Consortium.
  *
- * http://www.apache.org/licenses/LICENSE-2.0
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the “Software”), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
  *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
  */
 
 /* eslint-disable */
diff --git a/frontend/src/lib/cytoscape-cxtmenu/dom-util.js b/frontend/src/lib/cytoscape-cxtmenu/dom-util.js
new file mode 100644
index 0000000..d2bfe06
--- /dev/null
+++ b/frontend/src/lib/cytoscape-cxtmenu/dom-util.js
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2016-2020, The Cytoscape Consortium.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the “Software”), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/* eslint-disable */
+const removeEles = function (query, ancestor = document) {
+  const els = ancestor.querySelectorAll(query);
+
+  for (let i = 0; i < els.length; i++) {
+    const el = els[i];
+
+    el.parentNode.removeChild(el);
+  }
+};
+
+const setStyles = function (el, style) {
+  const props = Object.keys(style);
+
+  for (let i = 0, l = props.length; i < l; i++) {
+    el.style[props[i]] = style[props[i]];
+  }
+};
+
+const createElement = function (options) {
+  options = options || {};
+
+  const el = document.createElement(options.tag || 'div');
+
+  el.className = options.class || '';
+
+  if (options.style) {
+    setStyles(el, options.style);
+  }
+
+  return el;
+};
+
+const getPixelRatio = function () {
+  return window.devicePixelRatio || 1;
+};
+
+const getOffset = function (el) {
+  const offset = el.getBoundingClientRect();
+
+  return {
+    left: offset.left + document.body.scrollLeft
+          + parseFloat(getComputedStyle(document.body)['padding-left'])
+          + parseFloat(getComputedStyle(document.body)['border-left-width']),
+    top: offset.top + document.body.scrollTop
+         + parseFloat(getComputedStyle(document.body)['padding-top'])
+         + parseFloat(getComputedStyle(document.body)['border-top-width']),
+  };
+};
+
+module.exports = {
+  removeEles, setStyles, createElement, getPixelRatio, getOffset,
+};
diff --git a/frontend/src/lib/cytoscape-cxtmenu/index.js b/frontend/src/lib/cytoscape-cxtmenu/index.js
new file mode 100644
index 0000000..8d3879d
--- /dev/null
+++ b/frontend/src/lib/cytoscape-cxtmenu/index.js
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2016-2020, The Cytoscape Consortium.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the “Software”), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/* eslint-disable */
+const cxtmenu = require('./cxtmenu');
+
+// registers the extension on a cytoscape lib ref
+const register = function (cytoscape) {
+  if (!cytoscape) { return; } // can't register if cytoscape unspecified
+
+  cytoscape('core', 'cxtmenu', cxtmenu); // register with cytoscape.js
+};
+
+if (typeof cytoscape !== 'undefined') { // expose to global cytoscape (i.e. window.cytoscape)
+  register(cytoscape);
+}
+
+module.exports = register;
diff --git a/frontend/src/lib/cytoscape-cxtmenu-bitnine/package.json b/frontend/src/lib/cytoscape-cxtmenu/package.json
similarity index 100%
rename from frontend/src/lib/cytoscape-cxtmenu-bitnine/package.json
rename to frontend/src/lib/cytoscape-cxtmenu/package.json
diff --git a/frontend/src/static/google-Poppins.css b/frontend/src/static/google-Poppins.css
deleted file mode 100644
index 4647525..0000000
--- a/frontend/src/static/google-Poppins.css
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* devanagari */
-@font-face {
-  font-family: 'Poppins';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v13/pxiEyp8kv8JHgFVrJJbecmNE.woff2) format('woff2');
-  unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
-}
-/* latin-ext */
-@font-face {
-  font-family: 'Poppins';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v13/pxiEyp8kv8JHgFVrJJnecmNE.woff2) format('woff2');
-  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
-  font-family: 'Poppins';
-  font-style: normal;
-  font-weight: 400;
-  src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v13/pxiEyp8kv8JHgFVrJJfecg.woff2) format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
diff --git a/frontend/src/static/icons/css/fontello.css b/frontend/src/static/icons/css/fontello.css
deleted file mode 100644
index 7c4d3e8..0000000
--- a/frontend/src/static/icons/css/fontello.css
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-@font-face {
-  font-family: 'fontello';
-  src: url('../font/fontello.eot?12833378');
-  src: url('../font/fontello.eot?12833378#iefix') format('embedded-opentype'),
-       url('../font/fontello.woff2?12833378') format('woff2'),
-       url('../font/fontello.woff?12833378') format('woff'),
-       url('../font/fontello.ttf?12833378') format('truetype'),
-       url('../font/fontello.svg?12833378#fontello') format('svg');
-  font-weight: normal;
-  font-style: normal;
-}
-/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
-/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
-/*
-@media screen and (-webkit-min-device-pixel-ratio:0) {
-  @font-face {
-    font-family: 'fontello';
-    src: url('../font/fontello.svg?12833378#fontello') format('svg');
-  }
-}
-*/
-
- [class^="icon-"]:before, [class*=" icon-"]:before {
-  font-family: "fontello";
-  font-style: normal;
-  font-weight: normal;
-  speak: never;
-
-  display: inline-block;
-  text-decoration: inherit;
-  width: 1em;
-  margin-right: .2em;
-  text-align: center;
-  /* opacity: .8; */
-
-  /* For safety - reset parent styles, that can break glyph codes*/
-  font-variant: normal;
-  text-transform: none;
-
-  /* fix buttons height, for twitter bootstrap */
-  line-height: 1em;
-
-  /* Animation center compensation - margins should be symmetric */
-  /* remove if not needed */
-  margin-left: .2em;
-
-  /* you can be more comfortable with increased icons size */
-  /* font-size: 120%; */
-
-  /* Font smoothing. That was taken from TWBS */
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-
-  /* Uncomment for 3D effect */
-  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
-}
-
-.icon-eraser:before { content: '\e800'; }
-.icon-filter:before { content: '\e801'; font-size: 24px; }
-.icon-graph:before { content: '\e802'; }
-.icon-play:before { content: '\e803'; font-size: 30px; }
-.icon-close-session:before { content: '\e804'; font-size: 30px; color: #142B80; }
-.icon-refresh:before { content: '\e805'; font-size: 30px; color: #18CCC5; }
-.icon-search-cancel:before { content: '\e806'; font-size: 24px; }
-.icon-edge-weight:before { content: '\e807'; font-size: 24px;}
diff --git a/frontend/src/static/icons/font/fontello.eot b/frontend/src/static/icons/font/fontello.eot
deleted file mode 100644
index 76dc8f9..0000000
--- a/frontend/src/static/icons/font/fontello.eot
+++ /dev/null
Binary files differ
diff --git a/frontend/src/static/icons/font/fontello.svg b/frontend/src/static/icons/font/fontello.svg
deleted file mode 100644
index b6b2a39..0000000
--- a/frontend/src/static/icons/font/fontello.svg
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!--
-  - Licensed to the Apache Software Foundation (ASF) under one
-  - or more contributor license agreements.  See the NOTICE file
-  - distributed with this work for additional information
-  - regarding copyright ownership.  The ASF licenses this file
-  - to you under the Apache License, Version 2.0 (the
-  - "License"); you may not use this file except in compliance
-  - with the License.  You may obtain a copy of the License at
-  -
-  - http://www.apache.org/licenses/LICENSE-2.0
-  -
-  - Unless required by applicable law or agreed to in writing,
-  - software distributed under the License is distributed on an
-  - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  - KIND, either express or implied.  See the License for the
-  - specific language governing permissions and limitations
-  - under the License.
-  -->
-
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>Copyright (C) 2021 by original authors @ fontello.com</metadata>
-<defs>
-<font id="fontello" horiz-adv-x="1000" >
-<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
-<missing-glyph horiz-adv-x="1000" />
-<glyph glyph-name="eraser" unicode="&#xe800;" d="M499 850c-276 0-500-224-500-500s224-500 500-500 500 224 500 500l0 0c0 276-224 500-500 500z m-156-278l156-156 157 156 65-66-156-156 156-156-66-66-156 156-156-156-65 66 156 156-156 156 65 66z" horiz-adv-x="1000" />
-
-<glyph glyph-name="filter" unicode="&#xe801;" d="M939 556c-11 6-22 11-35 13-44 8-92 16-139 23-19 2-39 3-59 4-9 1-17 1-26 2l-27 2v-78l24-1c27 0 54-2 80-5-34-4-69-7-104-9-138-8-278-5-416 8 30 4 60 6 91 7l25 1-4 78-26-2c-14-1-28-2-42-3-31-3-63-5-94-10-37-5-73-14-109-25-25-7-34-22-37-33-3-12-3-30 17-52 109-120 218-241 326-361 2-2 2-4 3-7 1-56 1-107 0-153-3-27 11-53 35-66 25-13 52-24 80-33 18-4 36-6 54-6 3 0 6 0 10 0 14 0 49 5 49 52l1 36c0 55 1 110 1 166 0 5 1 11 6 16 109 120 218 240 326 360 6 5 9 10 12 16 10 23 0 49-22 60z m-382-395c-12-12-18-29-18-45 1-41 0-83 0-124l0-66c-1 0-1 1-2 1-22 7-47 15-74 25l0 3c1 54 1 109 1 164-1 14-6 28-16 39-85 95-170 190-256 284 206-21 414-21 620 0-9-10-18-20-27-30-77-84-152-168-228-251z m-309 478c0 0 0 0 0 0 23 0 47 8 65 22l84-40c0-58 47-104 105-104 58 0 105 47 105 105 0 1 0 3 0 3l90 48c19-21 47-34 76-34 0 0 0 0 0 0 29 0 55 11 75 31 20 20 30 47 30 75 0 11-1 21-5 31-9 28-25 43-25 43-20 20-47 31-75 31 0 0 0 0 0 0-28 0-55-11-74-31s-31-47-31-74c0-1 0-2 0-3l-90-48c-20 21-47 33-76 33-31 0-60-13-79-35l-72 34c4 19 2 39-6 57-10 26-30 47-56 58-13 6-27 8-41 8-59 0-106-47-106-105s48-105 106-105z m0 135c17 0 30-13 30-30s-13-31-30-31c-17 0-31 14-31 31s14 30 31 30z m224-152c0 17 14 30 30 30 17 0 31-13 31-30s-14-31-31-31c-16 1-30 14-30 31z m332 123c0-8-2-15-7-20l-2-2c-6-6-13-9-22-9 0 0 0 0 0 0-16 0-30 14-30 31 0 16 14 30 30 30 0 0 0 0 0 0 18 0 31-14 31-30z" horiz-adv-x="1000" />
-
-<glyph glyph-name="graph" unicode="&#xe802;" d="M859 523c77 0 140 63 140 140s-63 141-140 141-140-63-140-141c0-15 3-30 8-45l-120-91c-29 19-63 30-101 30-34 0-67-9-94-26l-103 120c8 18 13 37 13 58 0 78-63 141-141 141s-140-63-140-141 63-140 140-140c26 0 50 7 71 20l99-116c-18-29-29-63-29-100 0-20 3-39 9-57l-123-94c-20 12-43 19-68 19-78 0-141-63-141-141s63-140 141-140 140 63 140 140c0 22-5 42-14 61l109 83c34-34 80-55 131-55 27 0 52 5 74 15l114-132c-17-23-27-52-27-82 0-78 63-141 140-141s141 63 141 141-64 140-141 140c-16 0-31-3-46-8l-113 133c26 32 43 73 43 118 0 34-10 65-26 93l111 84c23-17 52-27 83-27z m0 197c31 0 56-26 56-57s-25-56-56-56-56 25-56 56 25 57 56 57z m-678-67c-31 0-56 25-56 56s25 57 56 57 57-26 57-57-25-56-57-56z m-41-609c-32 0-57 25-57 56s25 57 57 57 56-26 56-57-25-56-56-56z m366 229c-55 0-100 45-100 100s45 101 100 101 101-45 101-101-45-100-101-100z m301-227c31 0 56-25 56-56 0-31-25-57-56-57-31 0-57 26-57 57 1 31 26 56 57 56z" horiz-adv-x="1000" />
-
-<glyph glyph-name="play" unicode="&#xe803;" d="M911 415c-11 18-27 33-43 44l-583 367-9 6c-39 23-88 24-129 1-40-23-65-65-65-111v-743c0-46 25-89 65-113 19-11 41-16 63-16 1 0 1 0 1 0 23 0 45 5 67 18l588 371c61 37 81 115 45 176z m-251-66l-375-237v475l375-238z" horiz-adv-x="1000" />
-
-<glyph glyph-name="close-session" unicode="&#xe804;" d="M864 850h-728a136 136 0 0 1-136-136v-728a136 136 0 0 1 136-136h728a136 136 0 0 1 136 136v728a136 136 0 0 1-136 136z m-129-736a54 54 0 0 0-75 1l-160 160-160-160-1-1a53 53 0 0 0-74 77l160 159-160 160a53 53 0 0 0 75 76l160-160 160 160a53 53 0 0 0 75 0l2-1a53 53 0 0 0-2-75l-159-160 159-160 2-1a54 54 0 0 0-2-75z" horiz-adv-x="1000" />
-
-<glyph glyph-name="refresh" unicode="&#xe805;" d="M864 850h-728a136 136 0 0 1-136-136v-728a136 136 0 0 1 136-136h728a136 136 0 0 1 136 136v728a136 136 0 0 1-136 136z m-154-706a268 268 0 0 0-182-99 270 270 0 0 0-297 226l0 0a49 49 0 0 0 96 15 172 172 0 1 1 187 199v-56l0-1a19 19 0 0 0-29-13l-1 1-142 104a18 18 0 0 0-3 4 18 18 0 0 0 3 25l143 104a19 19 0 0 0 29-12l0-1v-57a270 270 0 0 0 196-439z" horiz-adv-x="1000" />
-
-<glyph glyph-name="search-cancel" unicode="&#xe806;" d="M752 850a105 105 0 0 1-103-123l-72-34a105 105 0 0 1-78 36h0a105 105 0 0 1-78-36l-71 34a105 105 0 1 1-104-86h0a105 105 0 0 1 65 22l84-40a105 105 0 0 1 104-104h0a105 105 0 0 1 104 104l84 40a105 105 0 0 1 65-22h0a105 105 0 0 1 0 209z m-506-135a30 30 0 1 0 31 30 30 30 0 0 0-31-30z m253-121a30 30 0 1 0 30 30v0a30 30 0 0 0-30-30z m253 121a30 30 0 1 0 31 30v0a30 30 0 0 0-31-30z m76-420a234 234 0 1 1 133-211 234 234 0 0 1-133 211z m49-319l-51-51-99 99-99-99-51 51 99 99-99 99 51 51 99-99 99 99 51-51-99-99z m-454 108a305 305 0 0 0 13 89q-123 136-246 272a2971 2971 0 0 1 618 0l-27-30c-9-10-17-19-26-28a301 301 0 0 0 85-21l106 116a46 46 0 0 1 11 17 46 46 0 0 1-22 59 110 110 0 0 1-35 13c-44 8-91 16-138 23-20 2-40 3-59 4-9 1-17 1-26 2l-27 2v-78l24 0q40-2 80-6c-34-3-69-7-104-8a2660 2660 0 0 0-415 7q45 6 91 7l25 1-3 78-27-2c-14-2-28-3-42-4-31-2-63-5-94-9a696 696 0 0 1-107-24 50 50 0 0 1-37-34 53 53 0 0 1 16-51q163-180 325-360a11 11 0 0 0 2-7c1-56 1-107 1-153a65 65 0 0 1 34-65 522 522 0 0 1 80-33 224 224 0 0 1 27-5 303 303 0 0 0-103 228z" horiz-adv-x="1000" />
-
-<glyph glyph-name="edge-weight" unicode="&#xe807;" d="M0 360v-85a32 32 0 0 1 35-28h929a32 32 0 0 1 35 28v85a32 32 0 0 1-35 29h-929a32 32 0 0 1-35-29z m1 262v-44a29 29 0 0 1 31-26h937a29 29 0 0 1 31 26v44a29 29 0 0 1-31 25h-937a29 29 0 0 1-31-25z m-1-598v-142a36 36 0 0 1 39-32h921a36 36 0 0 1 39 32v142a36 36 0 0 1-39 32h-921a36 36 0 0 1-39-32z m0 802v-10a27 27 0 0 1 29-24h941a27 27 0 0 1 29 24v10a27 27 0 0 1-29 24h-941a27 27 0 0 1-29-24z" horiz-adv-x="1000" />
-</font>
-</defs>
-</svg>
diff --git a/frontend/src/static/icons/font/fontello.ttf b/frontend/src/static/icons/font/fontello.ttf
deleted file mode 100644
index c74fc93..0000000
--- a/frontend/src/static/icons/font/fontello.ttf
+++ /dev/null
Binary files differ
diff --git a/frontend/src/static/icons/font/fontello.woff b/frontend/src/static/icons/font/fontello.woff
deleted file mode 100644
index 85262f2..0000000
--- a/frontend/src/static/icons/font/fontello.woff
+++ /dev/null
Binary files differ
diff --git a/frontend/src/static/icons/font/fontello.woff2 b/frontend/src/static/icons/font/fontello.woff2
deleted file mode 100644
index c5dad89..0000000
--- a/frontend/src/static/icons/font/fontello.woff2
+++ /dev/null
Binary files differ
diff --git a/frontend/src/static/style.css b/frontend/src/static/style.css
index d9b1718..1261c8f 100644
--- a/frontend/src/static/style.css
+++ b/frontend/src/static/style.css
@@ -213,14 +213,14 @@
 .editor-code-wrapper{
     margin-top: 1px;
     min-height: 60px;
-    padding: 0px;
+    padding: 0;
     resize: vertical;
     overflow: auto;
     border: 1px solid;
 }
 
-.editor-button-wrapper{
-    margin-left: -60px !important;
+.editor-button-wrapper {
+    margin-left: -50px !important;
     height: 60px;
 }
 
@@ -410,7 +410,7 @@
 }
 
 .alert {
-    margin-bottom: 0px;
+    margin-bottom: 0;
 }
 
 .chart-frame-area {
@@ -460,8 +460,8 @@
 }
 
 .graph-tabpanel {
-    padding-left: 0px !important;
-    padding-right: 0px !important;
+    padding-left: 0 !important;
+    padding-right: 0 !important;
 }
 
 .nodeLegend, .edgeLegend {
@@ -502,7 +502,7 @@
 .colorSelector {
     width: 15px;
     height: 15px;
-    padding: 6px 0px;
+    padding: 6px 0;
     border-radius: 15px;
     font-size: 8px;
     text-align: center;
@@ -522,7 +522,7 @@
 
 .sizeSelector.node {
     background-color: darkgrey;
-    padding: 6px 0px;
+    padding: 6px 0;
     border-radius: 15px;
     font-size: 8px;
     text-align: center;
@@ -532,7 +532,7 @@
 
 .sizeSelector.edge {
     background-color: darkgrey;
-    padding: 6px 0px;
+    padding: 6px 0;
     font-size: 8px;
     text-align: center;
     margin-left: 5px;
@@ -598,14 +598,14 @@
 }
 
 .carousel-inner {
-    margin: 0px 25px 10px 25px;
+    margin: 0 25px 10px 25px;
     width: initial;
     height: 100%;
     overflow:auto;
 }
 
 .carousel-indicators {
-    bottom: 0px;
+    bottom: 0;
 }
 
 .carousel-indicators li {
@@ -682,3 +682,35 @@
 .layout-select {
     margin-top: .15rem !important;
 }
+
+.close_session {
+    background-color: #142B80;
+    display: inline-block;
+    cursor: pointer;
+    color: #ffffff;
+    text-decoration: none;
+    width: 32px;
+    height: 32px;
+    padding: 0;
+    margin: 5px 0;
+}
+.close_session:active {
+    position:relative;
+    top:1px;
+}
+
+.refresh_button {
+    background-color: #18CCC5;
+    display: inline-block;
+    cursor: pointer;
+    color: #ffffff;
+    text-decoration: none;
+    width: 32px;
+    height: 32px;
+    padding: 0;
+    margin: 5px 0;
+}
+.refresh_button:active {
+    position:relative;
+    top:1px;
+}
