From cae14556a785e76ab7c881069fd89c4a207cff6f Mon Sep 17 00:00:00 2001
From: Benoit Lavenier <benoit.lavenier@e-is.pro>
Date: Wed, 11 Mar 2020 13:19:02 +0100
Subject: [PATCH] [fix] Network: avoid peer's avatar image to wink [fix]
 Network: avoid images to wink, on peer/block items (remove ':rebind:' prefix
 in avatar binding) [enh] BMA: use a specific cache prefix [enh] ES http,
 graph: always use a cache prefix, and clear cache when ES node changed [enh]
 Refactor code that use cache (always use csCache.constants, distinguish of
 request by path cache, etc.) [enh] Disable rebind in on <ng-template>, when
 not need (add a prefix '::' before template path)

---
 scripts/release-sign-extension.sh             |  16 +--
 www/js/services/bma-services.js               | 126 +++++++++---------
 www/js/services/http-services.js              |  28 +++-
 .../es/js/controllers/wot-controllers.js      |  13 +-
 .../es/js/services/blockchain-services.js     |   6 +-
 www/plugins/es/js/services/http-services.js   |  69 +++++-----
 .../es/js/services/profile-services.js        |  22 ++-
 www/plugins/es/js/services/wot-services.js    | 123 ++++++++---------
 .../es/templates/blockchain/items_blocks.html |   2 +-
 .../es/templates/blockchain/lookup.html       |   2 +-
 .../es/templates/blockchain/lookup_form.html  |   2 +-
 .../es/templates/common/item_comment.html     |   2 +-
 .../es/templates/common/view_comments.html    |   2 +-
 .../es/templates/document/list_documents.html |   2 +-
 www/plugins/es/templates/document/lookup.html |   2 +-
 .../es/templates/document/lookup_form.html    |   2 +-
 .../es/templates/group/edit_group.html        |   4 +-
 .../es/templates/group/items_groups.html      |   2 +-
 www/plugins/es/templates/group/lookup.html    |   2 +-
 .../es/templates/group/lookup_form.html       |   2 +-
 .../es/templates/group/view_record.html       |   4 +-
 .../invitation/modal_new_invitation.html      |   2 +-
 .../invitation/popover_invitation.html        |   2 +-
 .../invitation/view_invitations.html          |   2 +-
 www/plugins/es/templates/message/compose.html |   2 +-
 .../es/templates/message/lookup_lg.html       |   2 +-
 .../es/templates/message/modal_compose.html   |   2 +-
 .../es/templates/message/tabs/tab_list.html   |   2 +-
 .../es/templates/network/items_peers.html     |   2 +-
 .../es/templates/network/modal_network.html   |   2 +-
 .../es/templates/network/popover_network.html |   2 +-
 .../es/templates/network/view_es_network.html |   4 +-
 .../es/templates/network/view_es_peer.html    |   2 +-
 .../notification/popover_notification.html    |   2 +-
 .../notification/view_notifications.html      |   2 +-
 .../es/templates/registry/edit_record.html    |   6 +-
 .../es/templates/registry/view_record.html    |   6 +-
 .../templates/registry/view_wallet_pages.html |   2 +-
 .../es/templates/user/edit_profile.html       |   4 +-
 .../templates/wallet/view_wallet_extend.html  |   4 +-
 .../templates/wot/view_identity_extend.html   |   4 +-
 .../graph/js/services/data-services.js        |  23 ++--
 .../templates/account/graph_balance.html      |   2 +-
 .../graph/templates/account/view_stats.html   |   6 +-
 .../templates/blockchain/graph_tx_count.html  |   2 +-
 .../templates/blockchain/view_stats.html      |   4 +-
 .../currency/tabs/tab_blocks_stats.html       |   2 +-
 .../currency/tabs/tab_network_stats.html      |   2 +-
 .../currency/tabs/tab_parameters_stats.html   |   4 +-
 .../currency/tabs/tab_wot_stats.html          |   2 +-
 .../currency/view_currency_extend.html        |   6 +-
 .../templates/currency/view_stats_lg.html     |   6 +-
 .../graph/templates/docstats/graph.html       |   2 +-
 .../graph/templates/docstats/view_stats.html  |   2 +-
 .../templates/network/view_peer_stats.html    |   2 +-
 .../graph/templates/synchro/graph.html        |   2 +-
 .../graph/templates/synchro/view_stats.html   |   2 +-
 www/templates/api/home.html                   |   2 +-
 www/templates/api/transfer.html               |   2 +-
 www/templates/blockchain/item_block.html      |  16 +--
 .../blockchain/item_block_empty_lg.html       |   2 +-
 www/templates/blockchain/items_blocks.html    |   4 +-
 www/templates/blockchain/list_blocks.html     |   4 +-
 www/templates/blockchain/list_blocks_lg.html  |   6 +-
 www/templates/blockchain/lookup.html          |   2 +-
 www/templates/blockchain/lookup_lg.html       |   2 +-
 www/templates/blockchain/view_block.html      |  16 +--
 www/templates/currency/items_network.html     |   2 +-
 www/templates/currency/lookup.html            |   2 +-
 www/templates/currency/tabs/tab_blocks.html   |   2 +-
 www/templates/currency/tabs/tab_network.html  |   2 +-
 .../currency/tabs/tab_parameters.html         |   2 +-
 www/templates/currency/tabs/tab_wot.html      |   2 +-
 www/templates/currency/view_currency_lg.html  |   4 +-
 www/templates/help/modal_help.html            |   2 +-
 www/templates/help/view_help.html             |   2 +-
 www/templates/login/form_login.html           |  12 +-
 www/templates/login/form_scrypt_advanced.html |   2 +-
 www/templates/login/modal_login.html          |   2 +-
 www/templates/network/item_content_peer.html  |   6 +-
 www/templates/network/items_peers.html        |  12 +-
 www/templates/network/modal_network.html      |   2 +-
 www/templates/network/popover_network.html    |   2 +-
 www/templates/network/view_network.html       |  14 +-
 www/templates/network/view_peer.html          |   2 +-
 www/templates/wallet/list/modal_wallets.html  |   2 +-
 .../wallet/list/popover_wallets.html          |   2 +-
 www/templates/wallet/modal_security.html      |  14 +-
 www/templates/wallet/modal_transfer.html      |   2 +-
 www/templates/wallet/new_transfer.html        |   2 +-
 www/templates/wallet/view_wallet_tx.html      |   2 +-
 .../wallet/view_wallet_tx_error.html          |   4 +-
 .../wot/items_given_certifications.html       |   4 +-
 .../wot/items_received_certifications.html    |   4 +-
 www/templates/wot/lookup_form.html            |   2 +-
 www/templates/wot/lookup_lg.html              |   2 +-
 www/templates/wot/modal_lookup.html           |   2 +-
 .../wot/tabs/tab_given_certifications.html    |   2 +-
 www/templates/wot/tabs/tab_lookup.html        |   2 +-
 .../wot/tabs/tab_received_certifications.html |   2 +-
 www/templates/wot/view_certifications.html    |   4 +-
 101 files changed, 395 insertions(+), 345 deletions(-)

diff --git a/scripts/release-sign-extension.sh b/scripts/release-sign-extension.sh
index 9987add3a..8013cd28d 100755
--- a/scripts/release-sign-extension.sh
+++ b/scripts/release-sign-extension.sh
@@ -38,18 +38,18 @@ fi
 ### Sign extension
 case "$1" in
   pre)
-    web-ext sign "--api-key=${AMO_JWT_ISSUER}" "--api-secret=${AMO_JWT_SECRET}" "--source-dir=${PROJECT_DIR}/dist/web/ext" "--artifacts-dir=${PROJECT_DIR}/dist/web/build"  --id=${WEB_EXT_ID} --channel=unlisted
-    if [[ $? -ne 0 ]]; then
-      exit 1
-    fi
+      web-ext sign "--api-key=${AMO_JWT_ISSUER}" "--api-secret=${AMO_JWT_SECRET}" "--source-dir=${PROJECT_DIR}/dist/web/ext" "--artifacts-dir=${PROJECT_DIR}/dist/web/build"  --id=${WEB_EXT_ID} --channel=unlisted
+      if [[ $? -ne 0 ]]; then
+        exit 1
+      fi
     ;;
   rel)
-    web-ext sign "--api-key=${AMO_JWT_ISSUER}" "--api-secret=${AMO_JWT_SECRET}" "--source-dir=${PROJECT_DIR}/dist/web/ext" "--artifacts-dir=${PROJECT_DIR}/dist/web/build"  --id=${WEB_EXT_ID} --channel=listed
-    if [[ $? -ne 0 ]]; then
+      web-ext sign "--api-key=${AMO_JWT_ISSUER}" "--api-secret=${AMO_JWT_SECRET}" "--source-dir=${PROJECT_DIR}/dist/web/ext" "--artifacts-dir=${PROJECT_DIR}/dist/web/build"  --id=${WEB_EXT_ID} --channel=listed
       # Comment out, because always failed with message:
       #   "Your add-on has been submitted for review. It passed validation but could not be automatically signed because this is a listed add-on."
-      #exit 1
-    fi
+      #if [[ $? -ne 0 ]]; then
+      #  exit 1
+      #fi
     ;;
   *)
     echo "No task given"
diff --git a/www/js/services/bma-services.js b/www/js/services/bma-services.js
index 5bd2decd1..230ed12ae 100644
--- a/www/js/services/bma-services.js
+++ b/www/js/services/bma-services.js
@@ -2,13 +2,13 @@
 
 angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.settings.services'])
 
-.factory('BMA', function($q, $window, $rootScope, $timeout, csCrypto, Api, Device, UIUtils, csConfig, csSettings, csHttp) {
+.factory('BMA', function($q, $window, $rootScope, $timeout, csCrypto, Api, Device, UIUtils, csConfig, csSettings, csCache, csHttp) {
   'ngInject';
 
   function BMA(host, port, useSsl, useCache) {
 
-    var pubkey = "[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{43,44}";
-    var
+    var cachePrefix = "BMA-",
+      pubkey = "[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{43,44}",
       // TX output conditions
       SIG = "SIG\\((" + pubkey + ")\\)",
       XHX = 'XHX\\(([A-F0-9]{1,64})\\)',
@@ -71,6 +71,11 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       listeners,
       that = this;
 
+    that.raw = {
+      getByPath: {},
+      postByPath: {},
+      wsByPath: {}
+    };
     that.api = new Api(this, 'BMA-' + that.server);
     that.started = false;
     that.init = init;
@@ -82,15 +87,12 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       console.debug('[BMA] Enable SSL (forced by config or detected in URL)');
     }
 
-    if (host) {
-      init(host, port, useSsl, useCache);
-    }
-    that.useCache = useCache; // need here because used in get() function
+    if (host)  init(host, port, useSsl);
+    that.useCache = angular.isDefined(useCache) ? useCache : true; // need here because used in get() function
 
-    function init(host, port, useSsl, useCache) {
+    function init(host, port, useSsl) {
       if (that.started) that.stop();
       that.alive = false;
-      that.cache = _emptyCache();
 
       // Use settings as default, if exists
       if (csSettings.data && csSettings.data.node) {
@@ -98,7 +100,6 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
         port = port || csSettings.data.node.port;
 
         useSsl = angular.isDefined(useSsl) ? useSsl : (port == 443 || csSettings.data.node.useSsl || that.forceUseSsl);
-        useCache =  angular.isDefined(useCache) ? useCache : true;
       }
 
       if (!host) {
@@ -107,7 +108,6 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       that.host = host;
       that.port = port || 80;
       that.useSsl = angular.isDefined(useSsl) ? useSsl : (that.port == 443 || that.forceUseSsl);
-      that.useCache = angular.isDefined(useCache) ? useCache : false;
       that.server = csHttp.getServer(host, port);
       that.url = csHttp.getUrl(host, port, ''/*path*/, useSsl);
     }
@@ -120,35 +120,33 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       return new RegExp(regexpContent);
     }
 
-    function _emptyCache() {
-      return {
-        getByPath: {},
-        postByPath: {},
-        wsByPath: {}
-      };
-    }
-
     function closeWs() {
       if (!that.cache) return;
 
       console.warn('[BMA] Closing all websockets...');
-      _.keys(that.cache.wsByPath||{}).forEach(function(key) {
-        var sock = that.cache.wsByPath[key];
+      _.keys(that.raw.wsByPath||{}).forEach(function(key) {
+        var sock = that.raw.wsByPath[key];
         sock.close();
       });
-      that.cache.wsByPath = {};
+      that.raw.wsByPath = {};
     }
 
-    that.cleanCache = function() {
-      console.debug('[BMA] Cleaning requests cache...');
-      closeWs();
-      that.cache = _emptyCache();
-    };
+   function cleanCache() {
+     console.debug("[BMA] Cleaning cache {prefix: '{0}'}...".format(cachePrefix));
+     csCache.clear(cachePrefix);
 
-    get = function (path, cacheTime) {
+     // Clean raw requests cache
+     angular.merge(that.raw, {
+        getByPath: {},
+        postByPath: {},
+        wsByPath: {}
+     });
+   }
+
+   function get(path, cacheTime) {
 
       cacheTime = that.useCache && cacheTime || 0 /* no cache*/ ;
-      var cacheKey = path + (cacheTime ? ('#'+cacheTime) : '');
+      var requestKey = path + (cacheTime ? ('#'+cacheTime) : '');
 
       var getRequestFn = function(params) {
 
@@ -161,15 +159,15 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
           });
         }
 
-        var request = that.cache.getByPath[cacheKey];
+        var request = that.raw.getByPath[requestKey];
         if (!request) {
           if (cacheTime) {
-            request = csHttp.getWithCache(that.host, that.port, path, that.useSsl, cacheTime);
+            request = csHttp.getWithCache(that.host, that.port, path, that.useSsl, cacheTime, null, null, cachePrefix);
           }
           else {
             request = csHttp.get(that.host, that.port, path, that.useSsl);
           }
-          that.cache.getByPath[cacheKey] = request;
+          that.raw.getByPath[requestKey] = request;
         }
         var execCount = 1;
         return request(params)
@@ -195,9 +193,9 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       };
 
       return getRequestFn;
-    };
+    }
 
-    post = function(path) {
+    function post(path) {
       var postRequest = function(obj, params) {
         if (!that.started) {
           if (!that._startPromise) {
@@ -208,42 +206,43 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
           });
         }
 
-        var request = that.cache.postByPath[path];
+        var request = that.raw.postByPath[path];
         if (!request) {
           request =  csHttp.post(that.host, that.port, path, that.useSsl);
-          that.cache.postByPath[path] = request;
+          that.raw.postByPath[path] = request;
         }
         return request(obj, params);
       };
 
       return postRequest;
-    };
+    }
 
-    ws = function(path) {
+    function ws(path) {
       return function() {
-        var sock = that.cache.wsByPath[path];
+        var sock = that.raw.wsByPath[path];
         if (!sock || sock.isClosed()) {
           sock =  csHttp.ws(that.host, that.port, path, that.useSsl);
 
           // When close, remove from cache
           sock.onclose = function() {
-            delete that.cache.wsByPath[path];
+            delete that.raw.wsByPath[path];
           };
 
-          that.cache.wsByPath[path] = sock;
+          that.raw.wsByPath[path] = sock;
         }
         return sock;
       };
-    };
+    }
 
     that.isAlive = function() {
+      // Warn: cannot use previous get() function, because node may not be started yet
       return csHttp.get(that.host, that.port, '/node/summary', that.useSsl)()
         .then(function(json) {
           var software = json && json.duniter && json.duniter.software;
           var isCompatible = true;
 
           // Check duniter min version
-          if (software === 'duniter' && json.duniter.version && true) {
+          if (software === 'duniter' && json.duniter.version) {
             isCompatible = csHttp.version.isCompatible(csSettings.data.minVersion, json.duniter.version);
           }
           // TODO: check version of other software (DURS, Juniter, etc.)
@@ -348,8 +347,8 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
     that.stop = function() {
       console.debug('[BMA] Stopping...');
       removeListeners();
-      csHttp.cache.clear();
-      that.cleanCache();
+      closeWs();
+      cleanCache();
       that.alive = false;
       that.started = false;
       delete that._startPromise;
@@ -397,7 +396,7 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
         TX_OUTPUT_FUNCTIONS: test(OUTPUT_FUNCTIONS)
       },
       node: {
-        summary: get('/node/summary', csHttp.cache.LONG),
+        summary: get('/node/summary', csCache.constants.LONG),
         same: function(host2, port2) {
           return host2 === that.host && ((!that.port && !port2) || (that.port == port2||80)) && (that.useSsl == (port2 && port2 === 443));
         },
@@ -416,11 +415,11 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       },
       wot: {
         lookup: get('/wot/lookup/:search'),
-        certifiedBy: get('/wot/certified-by/:pubkey', csHttp.cache.SHORT),
-        certifiersOf: get('/wot/certifiers-of/:pubkey', csHttp.cache.SHORT),
+        certifiedBy: get('/wot/certified-by/:pubkey', csCache.constants.SHORT),
+        certifiersOf: get('/wot/certifiers-of/:pubkey', csCache.constants.SHORT),
         member: {
-          all: get('/wot/members', csHttp.cache.LONG),
-          pending: get('/wot/pending', csHttp.cache.SHORT)
+          all: get('/wot/members', csCache.constants.LONG),
+          pending: get('/wot/pending', csCache.constants.SHORT)
         },
         requirements: function(params, cache) {
           // No cache by default
@@ -432,8 +431,8 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
         revoke: post('/wot/revoke')
       },
       blockchain: {
-        parameters: get('/blockchain/parameters', csHttp.cache.VERY_LONG),
-        block: get('/blockchain/block/:block', csHttp.cache.SHORT),
+        parameters: get('/blockchain/parameters', csCache.constants.VERY_LONG),
+        block: get('/blockchain/block/:block', csCache.constants.SHORT),
         blocksSlice: get('/blockchain/blocks/:count/:from'),
         current: function(cache) {
           // No cache by default
@@ -441,15 +440,15 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
         },
         membership: post('/blockchain/membership'),
         stats: {
-          ud: get('/blockchain/with/ud', csHttp.cache.MEDIUM),
+          ud: get('/blockchain/with/ud', csCache.constants.MEDIUM),
           tx: get('/blockchain/with/tx'),
-          newcomers: get('/blockchain/with/newcomers', csHttp.cache.MEDIUM),
+          newcomers: get('/blockchain/with/newcomers', csCache.constants.MEDIUM),
           hardship: get('/blockchain/hardship/:pubkey'),
           difficulties: get('/blockchain/difficulties')
         }
       },
       tx: {
-        sources: get('/tx/sources/:pubkey', csHttp.cache.SHORT),
+        sources: get('/tx/sources/:pubkey', csCache.constants.SHORT),
         process: post('/tx/process'),
         history: {
           all: function(params) {
@@ -473,7 +472,7 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
                 return res;
               });
           },
-          blocks: get('/tx/history/:pubkey/blocks/:from/:to', csHttp.cache.LONG),
+          blocks: get('/tx/history/:pubkey/blocks/:from/:to', csCache.constants.LONG),
           pending: get('/tx/history/:pubkey/pending')
         }
       },
@@ -484,16 +483,16 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       version: {},
       raw: {
         blockchain: {
-          currentWithCache: get('/blockchain/current', csHttp.cache.SHORT),
+          currentWithCache: get('/blockchain/current', csCache.constants.SHORT),
           current: get('/blockchain/current')
         },
         wot: {
-          requirementsWithCache: get('/wot/requirements/:pubkey', csHttp.cache.LONG),
+          requirementsWithCache: get('/wot/requirements/:pubkey', csCache.constants.LONG),
           requirements: get('/wot/requirements/:pubkey')
         },
         tx: {
           history: {
-            timesWithCache: get('/tx/history/:pubkey/times/:from/:to', csHttp.cache.LONG),
+            timesWithCache: get('/tx/history/:pubkey/times/:from/:to', csCache.constants.LONG),
             times: get('/tx/history/:pubkey/times/:from/:to'),
             all: get('/tx/history/:pubkey')
           }
@@ -951,7 +950,7 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
         duniterLatestReleaseUrl.port,
         "/" + duniterLatestReleaseUrl.pathname,
         /*useSsl*/ (+(duniterLatestReleaseUrl.port) === 443 || duniterLatestReleaseUrl.protocol === 'https:' || that.forceUseSsl),
-        csHttp.cache.LONG
+        csCache.constants.LONG
       ) :
       // No URL define: use a fake function
       function() {
@@ -990,9 +989,10 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
     angular.merge(that, exports);
   }
 
-  var service = new BMA(undefined, undefined, undefined, true);
+  var service = new BMA();
 
   service.instance = function(host, port, useSsl, useCache) {
+    useCache = angular.isDefined(useCache) ? useCache : false; // No cache by default
     return new BMA(host, port, useSsl, useCache);
   };
 
@@ -1003,9 +1003,9 @@ angular.module('cesium.bma.services', ['ngApi', 'cesium.http.services', 'cesium.
       host: host,
       port: port,
       useSsl: useSsl,
-      url: csHttp.getUrl(host, port, ''/*path*/, useSsl),
+      url: csHttp.getUrl(host, port, ''/*no path*/, useSsl),
       node: {
-        summary: csHttp.getWithCache(host, port, '/node/summary', useSsl, csHttp.cache.LONG, false, timeout)
+        summary: csHttp.getWithCache(host, port, '/node/summary', useSsl, csCache.constants.MEDIUM, false/*autoRefresh*/, timeout)
       },
       network: {
         peering: {
diff --git a/www/js/services/http-services.js b/www/js/services/http-services.js
index d18a1c745..327d2ad1b 100644
--- a/www/js/services/http-services.js
+++ b/www/js/services/http-services.js
@@ -7,7 +7,8 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
 
   var
     sockets = [],
-    cachePrefix = 'csHttp-'
+    defaultCachePrefix = 'csHttp-',
+    allCachePrefixes = {};
   ;
 
   if (!timeout) {
@@ -94,7 +95,10 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
 
   function getResourceWithCache(host, port, path, useSsl, maxAge, autoRefresh, forcedTimeout, cachePrefix) {
     var url = getUrl(host, port, path, useSsl);
+    cachePrefix = cachePrefix || defaultCachePrefix;
     maxAge = maxAge || csCache.constants.LONG;
+    allCachePrefixes[cachePrefix] = true;
+
     //console.debug('[http] will cache ['+url+'] ' + maxAge + 'ms' + (autoRefresh ? ' with auto-refresh' : ''));
 
     return function(params) {
@@ -233,7 +237,7 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
                 _open(self, null, params);
               }
               else if (closeEvent) {
-                console.debug('[http] TODO -- Unexpected close of websocket [{0}]: error code: '.format(path), closeEvent);
+                console.debug('[http] Unexpected close of websocket [{0}]: error code: '.format(path), closeEvent && closeEvent.code || closeEvent);
 
                 // Force new connection
                 self.delegate = null;
@@ -494,11 +498,18 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
     return compareVersionNumbers(minVersion, actualVersion) <= 0;
   }
 
-  var cache = angular.copy(csCache.constants);
-  cache.clear = function() {
-    console.debug('[http] Cleaning cache...');
+  function clearCache(cachePrefix) {
+    cachePrefix = cachePrefix || defaultCachePrefix;
+    console.debug("[http] Cleaning cache {prefix: '{0}'}...".format(cachePrefix));
     csCache.clear(cachePrefix);
-  };
+  }
+
+  function clearAllCache() {
+    console.debug('[http] Cleaning all caches...');
+    _.keys(allCachePrefixes).forEach(function(cachePrefix) {
+      csCache.clear(cachePrefix);
+    });
+  }
 
   return {
     get: getResource,
@@ -519,7 +530,10 @@ angular.module('cesium.http.services', ['cesium.cache.services'])
       compare: compareVersionNumbers,
       isCompatible: isVersionCompatible
     },
-    cache: cache
+    cache:  angular.merge({
+      clear: clearCache,
+      clearAll: clearAllCache
+    }, csCache.constants)
   };
 })
 ;
diff --git a/www/plugins/es/js/controllers/wot-controllers.js b/www/plugins/es/js/controllers/wot-controllers.js
index fe42edd90..24a88f625 100644
--- a/www/plugins/es/js/controllers/wot-controllers.js
+++ b/www/plugins/es/js/controllers/wot-controllers.js
@@ -311,6 +311,11 @@ function ESWotIdentityViewController($scope, $ionicPopover, $q, $controller, $ti
       });
   };
 
+  /**
+   * Delete the user profile (need moderator access, on Cs+ pod)
+   * @param confirm
+   * @returns {*}
+   */
   $scope.delete = function(confirm) {
 
     if (!confirm) {
@@ -323,6 +328,12 @@ function ESWotIdentityViewController($scope, $ionicPopover, $q, $controller, $ti
         });
     }
 
+    // TODO: ask for deletion of all data ? (e.g. message, comment, likes, etc.)
+    // if (angular.isUndefined(allData)) {
+    //   return UIUtils.alert.confirm(...)
+    //   ...
+    // }
+
     return UIUtils.loading.show()
       .then(function() {
         return esProfile.remove($scope.formData.pubkey);
@@ -347,7 +358,7 @@ function ESWotIdentityViewController($scope, $ionicPopover, $q, $controller, $ti
       // Load likes,
       $scope.loadLikes(pubkey);
 
-      // Update moderator right
+      // Enable deletion, if moderator
       $scope.canDelete = $scope.formData.profile && csWallet.isLogin() && csWallet.data.moderator === true;
     }
 
diff --git a/www/plugins/es/js/services/blockchain-services.js b/www/plugins/es/js/services/blockchain-services.js
index 9116acf0c..72fbe80e3 100644
--- a/www/plugins/es/js/services/blockchain-services.js
+++ b/www/plugins/es/js/services/blockchain-services.js
@@ -1,6 +1,6 @@
 angular.module('cesium.es.blockchain.services', ['cesium.services', 'cesium.es.http.services'])
 
-.factory('esBlockchain', function($rootScope, $q, $timeout, BMA, esHttp) {
+.factory('esBlockchain', function($rootScope, $q, $timeout, BMA, csCache, esHttp) {
   'ngInject';
 
   function EsBlockchain() {
@@ -31,9 +31,9 @@ angular.module('cesium.es.blockchain.services', ['cesium.services', 'cesium.es.h
         block: {},
         raw: {
           block: {
-            search: esHttp.post('/:currency/block/_search', esHttp.cache.SHORT),
+            search: esHttp.post('/:currency/block/_search', csCache.constants.SHORT),
             searchText: esHttp.get('/:currency/block/_search?q=:text'),
-            get: esHttp.get('/:currency/block/:number/_source', esHttp.cache.SHORT)
+            get: esHttp.get('/:currency/block/:number/_source', csCache.constants.SHORT)
           }
         },
         regexp: {
diff --git a/www/plugins/es/js/services/http-services.js b/www/plugins/es/js/services/http-services.js
index 8e652c6ed..36e4cfcb2 100644
--- a/www/plugins/es/js/services/http-services.js
+++ b/www/plugins/es/js/services/http-services.js
@@ -14,7 +14,7 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
     console.debug('[ES] [https] Enable SSL (forced by config or detected in URL)');
   }
 
-  function EsHttp(host, port, useSsl, useCache) {
+  function EsHttp(host, port, useSsl, enableCache) {
 
     var
       that = this,
@@ -42,15 +42,21 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
     that.data = {
       isFallback: false
     };
-    that.cache = _emptyCache();
+    that.cache = {
+      enable: angular.isDefined(enableCache) ? enableCache : false, // need here because used in get() function
+    };
+    that.raw = {
+      getByPath: {},
+      postByPath: {},
+      wsByPath: {}
+    };
     that.api = new Api(this, "esHttp");
     that.started = false;
     that.init = init;
 
-    init(host, port, useSsl, useCache);
-    that.useCache = angular.isDefined(useCache) ? useCache : false; // need here because used in get() function
+    init(host, port, useSsl);
 
-    function init(host, port, useSsl, useCache) {
+    function init(host, port, useSsl) {
       // Use settings as default
       if (!host && csSettings.data) {
         host = host || (csSettings.data.plugins && csSettings.data.plugins.es ? csSettings.data.plugins.es.host : null);
@@ -100,14 +106,6 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
       return new RegExp(regexpContent);
     }
 
-    function _emptyCache() {
-      return {
-        getByPath: {},
-        postByPath: {},
-        wsByPath: {}
-      };
-    }
-
     function onSettingsReset(data, deferred) {
       deferred = deferred || $q.defer();
 
@@ -126,14 +124,18 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
       return deferred.promise;
     }
 
-    that.cleanCache = function() {
-      console.debug('[ES] [http] Cleaning requests cache...');
-      _.keys(that.cache.wsByPath).forEach(function(key) {
-        var sock = that.cache.wsByPath[key];
+    that.clearAllCache = function() {
+      console.debug("[ES] [http] Cleaning cache {prefix: '{0}'}...".format(cachePrefix));
+      _.keys(that.raw.wsByPath).forEach(function(key) {
+        var sock = that.raw.wsByPath[key];
         sock.close();
       });
-      that.cache = _emptyCache();
 
+      angular.merge(that.raw, {
+        getByPath: {},
+        postByPath: {},
+        wsByPath: {}
+      });
       csCache.clear(cachePrefix);
     };
 
@@ -158,8 +160,8 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
 
     that.get = function (path, cacheTime) {
 
-      cacheTime = that.useCache && cacheTime;
-      var cacheKey = path + (cacheTime ? ('#'+cacheTime) : '');
+      cacheTime = that.cache.enable && cacheTime;
+      var requestKey = path + (cacheTime ? ('#'+cacheTime) : '');
 
       var getRequestFn = function(params) {
         if (!that.started) {
@@ -172,7 +174,7 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
           });
         }
 
-        var request = that.cache.getByPath[cacheKey];
+        var request = that.raw.getByPath[requestKey];
         if (!request) {
           if (cacheTime) {
             request =  csHttp.getWithCache(that.host, that.port, path, that.useSsl, cacheTime, null, null, cachePrefix);
@@ -180,7 +182,7 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
           else {
             request =  csHttp.get(that.host, that.port, path, that.useSsl);
           }
-          that.cache.getByPath[cacheKey] = request;
+          that.raw.getByPath[requestKey] = request;
         }
         return request(params);
       };
@@ -200,10 +202,10 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
           });
         }
 
-        var request = that.cache.postByPath[path];
+        var request = that.raw.postByPath[path];
         if (!request) {
           request =  csHttp.post(that.host, that.port, path, that.useSsl);
-          that.cache.postByPath[path] = request;
+          that.raw.postByPath[path] = request;
         }
         return request(obj, params);
       };
@@ -212,16 +214,16 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
 
     that.ws = function(path) {
       return function() {
-        var sock = that.cache.wsByPath[path];
+        var sock = that.raw.wsByPath[path];
         if (!sock || sock.isClosed()) {
           sock =  csHttp.ws(that.host, that.port, path, that.useSsl);
 
           // When close, remove from cache
           sock.onclose = function() {
-            delete that.cache.wsByPath[path];
+            delete that.raw.wsByPath[path];
           };
 
-          that.cache.wsByPath[path] = sock;
+          that.raw.wsByPath[path] = sock;
         }
         return sock;
       };
@@ -290,7 +292,7 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
         .then(function (confirm) {
           if (!confirm) return false; // stop the loop
 
-          that.cleanCache();
+          that.clearAllCache();
 
           that.init(fallbackNode.host, fallbackNode.port, fallbackNode.useSsl || fallbackNode.port == 443);
 
@@ -364,7 +366,7 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
       setIsFallbackNode(false); // will be re-computed during start phase
       delete that._startPromise;
       if (that.alive) {
-        that.cleanCache();
+        that.clearAllCache();
         that.alive = false;
         that.started = false;
         that.api.node.raise.stop();
@@ -745,6 +747,7 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
     that.api.registerEvent('node', 'start');
     that.api.registerEvent('node', 'stop');
 
+
     var exports = {
       getServer: csHttp.getServer,
       node: {
@@ -788,7 +791,9 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
         parseAsHtml: parseAsHtml,
         findObjectInTree: findObjectInTree
       },
-      cache: csHttp.cache,
+      cache: {
+        clearAll: that.clearAllCache
+      },
       constants: constants
     };
     exports.constants.regexp = regexp;
@@ -798,8 +803,8 @@ angular.module('cesium.es.http.services', ['ngResource', 'ngApi', 'cesium.servic
 
   var service = new EsHttp(undefined, undefined, undefined, true);
 
-  service.instance = function(host, port, useSsl, useCache) {
-    return new EsHttp(host, port, useSsl, useCache);
+  service.instance = function(host, port, useSsl, enableCache) {
+    return new EsHttp(host, port, useSsl, enableCache);
   };
 
   service.lightInstance = function(host, port, useSsl, timeout) {
diff --git a/www/plugins/es/js/services/profile-services.js b/www/plugins/es/js/services/profile-services.js
index c4e05f72d..b2e0112ee 100644
--- a/www/plugins/es/js/services/profile-services.js
+++ b/www/plugins/es/js/services/profile-services.js
@@ -10,7 +10,7 @@ angular.module('cesium.es.profile.services', ['cesium.services', 'cesium.es.http
 
   })
 
-  .factory('esProfile', function($rootScope, $q, esHttp, SocialUtils, csWot, csWallet, csPlatform, esSettings, esLike) {
+  .factory('esProfile', function($rootScope, $q, esHttp, SocialUtils, csWot, csWallet, csCache, csPlatform, esSettings, esLike) {
     'ngInject';
 
     var
@@ -19,10 +19,11 @@ angular.module('cesium.es.profile.services', ['cesium.services', 'cesium.es.http
 
     that.raw = {
       getFields: esHttp.get('/user/profile/:id?&_source_exclude=avatar._content&_source=:fields'),
-      get: esHttp.get('/user/profile/:id?&_source_exclude=avatar._content', esHttp.cache.MEDIUM),
-      getAll: esHttp.get('/user/profile/:id', esHttp.cache.MEDIUM),
-      search: esHttp.post('/user/profile/_search', esHttp.cache.MEDIUM),
-      mixedSearch: esHttp.post('/user,page,group/profile,record/_search', esHttp.cache.MEDIUM)
+      get: esHttp.get('/user/profile/:id?&_source_exclude=avatar._content', csCache.constants.MEDIUM),
+      getAll: esHttp.get('/user/profile/:id', csCache.constants.MEDIUM),
+      search: esHttp.post('/user/profile/_search', csCache.constants.MEDIUM),
+      mixedSearch: esHttp.post('/user,page,group/profile,record/_search', csCache.constants.MEDIUM),
+      remove: esHttp.record.remove("user","profile")
     };
 
     function getAvatarAndName(pubkey) {
@@ -353,6 +354,15 @@ angular.module('cesium.es.profile.services', ['cesium.services', 'cesium.es.http
       return deferred.promise;
     }
 
+    function removeProfile(pubkey, options) {
+      return that.raw.remove(pubkey, options)
+        .then(function(res) {
+          csCache.clear('csWot-');
+          csCache.clear('csWot-');
+          return res;
+        });
+    }
+
     function removeListeners() {
       _.forEach(listeners, function(remove){
         remove();
@@ -392,7 +402,7 @@ angular.module('cesium.es.profile.services', ['cesium.services', 'cesium.es.http
       get: getProfile,
       add: esHttp.record.post('/user/profile', {tagFields: ['title', 'description'], ignoreFields: ['enableGeoPoint', 'descriptionHtml', 'moderator']}),
       update: esHttp.record.post('/user/profile/:id/_update', {tagFields: ['title', 'description'], ignoreFields: ['enableGeoPoint', 'descriptionHtml', 'moderator']}),
-      remove: esHttp.record.remove("user","profile"),
+      remove: removeProfile,
       avatar: esHttp.get('/user/profile/:id?_source=avatar'),
       fillAvatars: fillAvatars,
       like: esLike.instance('user', 'profile')
diff --git a/www/plugins/es/js/services/wot-services.js b/www/plugins/es/js/services/wot-services.js
index 9c40566c1..c007c6665 100644
--- a/www/plugins/es/js/services/wot-services.js
+++ b/www/plugins/es/js/services/wot-services.js
@@ -10,81 +10,84 @@ angular.module('cesium.es.wot.services', ['ngResource', 'cesium.es.http.services
           user: {
             event: esHttp.post('/user/event/_search')
           }
-        },
-
-
-      loadMemberships = function(pubkey, options) {
-        options = options || {};
+        };
 
-        var result = (options.cache !== false) ? membershipsCache.get(pubkey) : null;
-        if (result) return $q.when(result);
+    function loadMemberships(pubkey, options) {
+      options = options || {};
 
-        // Get user events on membership state
-        var request = {
-          "size": 1000,
-          "query": {
-            "bool": {
-              "filter": [
-                {"term": {"recipient" : pubkey }},
-                {"terms": {"code" : ["MEMBER_JOIN","MEMBER_ACTIVE","MEMBER_LEAVE","MEMBER_EXCLUDE","MEMBER_REVOKE"] }}
-              ]
-            }
-          },
-          "sort" : [
-            { "time" : {"order" : "asc"}}
-          ],
-          _source: ["code", "time"]
-        };
+      var result = (options.cache !== false) ? membershipsCache.get(pubkey) : null;
+      if (result) return $q.when(result);
 
-        return raw.user.event(request)
+      // Get user events on membership state
+      var request = {
+        "size": 1000,
+        "query": {
+          "bool": {
+            "filter": [
+              {"term": {"recipient" : pubkey }},
+              {"terms": {"code" : ["MEMBER_JOIN","MEMBER_ACTIVE","MEMBER_LEAVE","MEMBER_EXCLUDE","MEMBER_REVOKE"] }}
+            ]
+          }
+        },
+        "sort" : [
+          { "time" : {"order" : "asc"}}
+        ],
+        _source: ["code", "time"]
+      };
 
-          .then(function(res) {
-            if (!res.hits || !res.hits.total) return;
+      return raw.user.event(request)
 
-            // Compute member periods
-            var lastJoinTime;
-            var result = res.hits.hits.reduce(function(res, hit){
-              var isMember = hit._source.code == 'MEMBER_JOIN' || hit._source.code == 'MEMBER_ACTIVE';
-              // If join
-              if (isMember && !lastJoinTime) {
-                lastJoinTime = hit._source.time;
-              }
-              // If leave
-              else if (!isMember && lastJoinTime) {
-                // Add an entry
-                res = res.concat({
-                  joinTime: lastJoinTime,
-                  leaveTime: hit._source.time
-                });
-                lastJoinTime = 0; // reset
-              }
-              return res;
-            }, []);
+        .then(function(res) {
+          if (!res.hits || !res.hits.total) return;
 
-            if (lastJoinTime) {
-              // Add last entry if need
-              result.push({
+          // Compute member periods
+          var lastJoinTime;
+          var result = res.hits.hits.reduce(function(res, hit){
+            var isMember = hit._source.code === 'MEMBER_JOIN' || hit._source.code === 'MEMBER_ACTIVE';
+            // If join
+            if (isMember && !lastJoinTime) {
+              lastJoinTime = hit._source.time;
+            }
+            // If leave
+            else if (!isMember && lastJoinTime) {
+              // Add an entry
+              res = res.concat({
                 joinTime: lastJoinTime,
-                leaveTime: moment().utc().unix()
+                leaveTime: hit._source.time
               });
+              lastJoinTime = 0; // reset
             }
+            return res;
+          }, []);
 
-            // Put in the cache
-            membershipsCache.put(pubkey, result);
+          if (lastJoinTime) {
+            // Add last entry if need
+            result.push({
+              joinTime: lastJoinTime,
+              leaveTime: moment().utc().unix()
+            });
+          }
 
-            return result;
-          });
-      },
+          // Put in the cache
+          membershipsCache.put(pubkey, result);
 
-      cleanCache = function() {
-        console.debug('[ES] [wot] Clean cache...');
-        csCache.clear(cachePrefix);
-      };
+          return result;
+        });
+    };
+
+
+    function cleanAllCache() {
+      console.debug("[ES] [wot] Cleaning cache {prefix: '{0}'}...".format(cachePrefix));
+      csCache.clear(cachePrefix);
+    }
 
     // Listen if node changed
-    esHttp.api.node.on.stop($rootScope, cleanCache, this);
+    esHttp.api.node.on.stop($rootScope, cleanAllCache, this);
 
     return {
-      memberships: loadMemberships
+      memberships: loadMemberships,
+      cache: {
+        clearAll: cleanAllCache
+      }
     };
   });
diff --git a/www/plugins/es/templates/blockchain/items_blocks.html b/www/plugins/es/templates/blockchain/items_blocks.html
index 8479ab0fd..3bb036216 100644
--- a/www/plugins/es/templates/blockchain/items_blocks.html
+++ b/www/plugins/es/templates/blockchain/items_blocks.html
@@ -46,6 +46,6 @@
 <!-- blocks (small screens) -->
 <ng-if ng-if=":rebind:smallscreen">
   <ng-repeat ng-repeat="block in :rebind:search.results track by block.number"
-             ng-include="'templates/blockchain/item_block.html'">
+             ng-include="::'templates/blockchain/item_block.html'">
   </ng-repeat>
 </ng-if>
diff --git a/www/plugins/es/templates/blockchain/lookup.html b/www/plugins/es/templates/blockchain/lookup.html
index 8cef4ff22..45d627f71 100644
--- a/www/plugins/es/templates/blockchain/lookup.html
+++ b/www/plugins/es/templates/blockchain/lookup.html
@@ -21,6 +21,6 @@
   </ion-nav-buttons>
 
   <ion-content class="padding no-padding-xs no-padding-sm" scroll="true">
-    <ng-include src="'plugins/es/templates/blockchain/lookup_form.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/blockchain/lookup_form.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/plugins/es/templates/blockchain/lookup_form.html b/www/plugins/es/templates/blockchain/lookup_form.html
index 4e6ddac2c..5699857a0 100644
--- a/www/plugins/es/templates/blockchain/lookup_form.html
+++ b/www/plugins/es/templates/blockchain/lookup_form.html
@@ -92,7 +92,7 @@
 
   <ion-list class="list list-blocks" ng-class="::motion.ionListClass">
 
-    <ng-include src="'plugins/es/templates/blockchain/items_blocks.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/blockchain/items_blocks.html'"></ng-include>
 
   </ion-list>
 
diff --git a/www/plugins/es/templates/common/item_comment.html b/www/plugins/es/templates/common/item_comment.html
index be81709f1..d04b72b3f 100644
--- a/www/plugins/es/templates/common/item_comment.html
+++ b/www/plugins/es/templates/common/item_comment.html
@@ -35,7 +35,7 @@
       </div>
     </div>
 
-    <ng-include src="'plugins/es/templates/common/item_comment_content.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/common/item_comment_content.html'"></ng-include>
 
     <div class="card-footer gray">
       <small class="underline">
diff --git a/www/plugins/es/templates/common/view_comments.html b/www/plugins/es/templates/common/view_comments.html
index 150dc46fc..57cc91985 100644
--- a/www/plugins/es/templates/common/view_comments.html
+++ b/www/plugins/es/templates/common/view_comments.html
@@ -14,7 +14,7 @@
 
   <div class="padding-right">
     <ng-repeat ng-repeat="comment in comments.result track by comment.id"
-               ng-include="'plugins/es/templates/common/item_comment.html'">
+               ng-include="::'plugins/es/templates/common/item_comment.html'">
     </ng-repeat>
   </div>
 
diff --git a/www/plugins/es/templates/document/list_documents.html b/www/plugins/es/templates/document/list_documents.html
index a16179840..43bcc647f 100644
--- a/www/plugins/es/templates/document/list_documents.html
+++ b/www/plugins/es/templates/document/list_documents.html
@@ -1,7 +1,7 @@
 
 <ion-list class="list" ng-class="::motion.ionListClass">
 
-  <ng-include src="'plugins/es/templates/document/items_documents.html'"></ng-include>
+  <ng-include src="::'plugins/es/templates/document/items_documents.html'"></ng-include>
 
 </ion-list>
 
diff --git a/www/plugins/es/templates/document/lookup.html b/www/plugins/es/templates/document/lookup.html
index df29fb913..1f2a41549 100644
--- a/www/plugins/es/templates/document/lookup.html
+++ b/www/plugins/es/templates/document/lookup.html
@@ -12,6 +12,6 @@
 
   <ion-content class="padding no-padding-xs no-padding-sm" scroll="true">
 
-    <ng-include src="'plugins/es/templates/document/lookup_form.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/document/lookup_form.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/plugins/es/templates/document/lookup_form.html b/www/plugins/es/templates/document/lookup_form.html
index c940bdd64..dbb5279aa 100644
--- a/www/plugins/es/templates/document/lookup_form.html
+++ b/www/plugins/es/templates/document/lookup_form.html
@@ -88,7 +88,7 @@
 
   <ion-list class="list" ng-class="::motion.ionListClass">
 
-    <ng-include src="'plugins/es/templates/document/items_documents.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/document/items_documents.html'"></ng-include>
 
   </ion-list>
 
diff --git a/www/plugins/es/templates/group/edit_group.html b/www/plugins/es/templates/group/edit_group.html
index 0f3563489..50f218a8a 100644
--- a/www/plugins/es/templates/group/edit_group.html
+++ b/www/plugins/es/templates/group/edit_group.html
@@ -49,7 +49,7 @@
               </div>
 
               <!-- pictures -->
-              <ng-include src="'plugins/es/templates/common/edit_pictures.html'"></ng-include>
+              <ng-include src="::'plugins/es/templates/common/edit_pictures.html'"></ng-include>
 
               <div class="item item-divider" translate>GROUP.GENERAL_DIVIDER</div>
 
@@ -85,7 +85,7 @@
               </div>
 
               <!-- social networks -->
-              <ng-include src="'plugins/es/templates/common/edit_socials.html'" ng-controller="ESSocialsEditCtrl"></ng-include>
+              <ng-include src="::'plugins/es/templates/common/edit_socials.html'" ng-controller="ESSocialsEditCtrl"></ng-include>
 
             </div>
 
diff --git a/www/plugins/es/templates/group/items_groups.html b/www/plugins/es/templates/group/items_groups.html
index b3df8b122..96ecedb17 100644
--- a/www/plugins/es/templates/group/items_groups.html
+++ b/www/plugins/es/templates/group/items_groups.html
@@ -25,5 +25,5 @@
 </div>
 
 <ng-repeat ng-repeat="group in :rebind:search.results"
-           ng-include="'plugins/es/templates/group/item_group.html'">
+           ng-include="::'plugins/es/templates/group/item_group.html'">
 </ng-repeat>
diff --git a/www/plugins/es/templates/group/lookup.html b/www/plugins/es/templates/group/lookup.html
index b676500b2..e40e5762f 100644
--- a/www/plugins/es/templates/group/lookup.html
+++ b/www/plugins/es/templates/group/lookup.html
@@ -11,6 +11,6 @@
   </ion-nav-buttons>
 
   <ion-content class="padding no-padding-xs no-padding-sm" scroll="true">
-    <ng-include src="'plugins/es/templates/group/lookup_form.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/group/lookup_form.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/plugins/es/templates/group/lookup_form.html b/www/plugins/es/templates/group/lookup_form.html
index a6e1900c8..889b7216f 100644
--- a/www/plugins/es/templates/group/lookup_form.html
+++ b/www/plugins/es/templates/group/lookup_form.html
@@ -73,7 +73,7 @@
 
   <div class="list {{::motion.ionListClass}}" ng-if="!$scope.search.loading">
 
-    <ng-include src="'plugins/es/templates/group/items_groups.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/group/items_groups.html'"></ng-include>
 
   </div>
 
diff --git a/www/plugins/es/templates/group/view_record.html b/www/plugins/es/templates/group/view_record.html
index ad628c906..af14838be 100644
--- a/www/plugins/es/templates/group/view_record.html
+++ b/www/plugins/es/templates/group/view_record.html
@@ -126,7 +126,7 @@
         <div class="lazy-load">
 
           <!-- pictures -->
-          <ng-include src="'plugins/es/templates/common/view_pictures.html'"></ng-include>
+          <ng-include src="::'plugins/es/templates/common/view_pictures.html'"></ng-include>
 
 
           <span class="item item-divider" ng-if="formData.pubkey">
@@ -143,7 +143,7 @@
           </div>
 
           <!-- comments -->
-          <ng-include src="'plugins/es/templates/common/view_comments.html'"></ng-include>
+          <ng-include src="::'plugins/es/templates/common/view_comments.html'"></ng-include>
         </div>
       </div>
 
diff --git a/www/plugins/es/templates/invitation/modal_new_invitation.html b/www/plugins/es/templates/invitation/modal_new_invitation.html
index 1254a0dae..40b13c75b 100644
--- a/www/plugins/es/templates/invitation/modal_new_invitation.html
+++ b/www/plugins/es/templates/invitation/modal_new_invitation.html
@@ -8,6 +8,6 @@
   </ion-header-bar>
 
   <ion-content scroll="true">
-      <ng-include src="'plugins/es/templates/invitation/new_invitation_form.html'"></ng-include>
+      <ng-include src="::'plugins/es/templates/invitation/new_invitation_form.html'"></ng-include>
   </ion-content>
 </ion-modal-view>
diff --git a/www/plugins/es/templates/invitation/popover_invitation.html b/www/plugins/es/templates/invitation/popover_invitation.html
index d13accfaf..475a4bb01 100644
--- a/www/plugins/es/templates/invitation/popover_invitation.html
+++ b/www/plugins/es/templates/invitation/popover_invitation.html
@@ -17,7 +17,7 @@
       INVITATION.NO_RESULT
     </div>
 
-    <ng-include src="'plugins/es/templates/invitation/list_invitation.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/invitation/list_invitation.html'"></ng-include>
 
   </ion-content>
 
diff --git a/www/plugins/es/templates/invitation/view_invitations.html b/www/plugins/es/templates/invitation/view_invitations.html
index d2753e360..9934b8ce0 100644
--- a/www/plugins/es/templates/invitation/view_invitations.html
+++ b/www/plugins/es/templates/invitation/view_invitations.html
@@ -38,7 +38,7 @@
           INVITATION.NO_RESULT
         </div>
 
-        <ng-include src="'plugins/es/templates/invitation/list_invitation.html'"></ng-include>
+        <ng-include src="::'plugins/es/templates/invitation/list_invitation.html'"></ng-include>
 
       </div>
 
diff --git a/www/plugins/es/templates/message/compose.html b/www/plugins/es/templates/message/compose.html
index ad6e0d0cf..255f8cb63 100644
--- a/www/plugins/es/templates/message/compose.html
+++ b/www/plugins/es/templates/message/compose.html
@@ -18,7 +18,7 @@
           {{'MESSAGE.COMPOSE.SUB_TITLE'|translate}}
         </h2>
         <h4 class="hidden-xs hidden-sm">&nbsp;</h4>
-        <ng-include src="'plugins/es/templates/message/compose_form.html'"></ng-include>
+        <ng-include src="::'plugins/es/templates/message/compose_form.html'"></ng-include>
       </div>
       <div class="col col-20 hidden-xs hidden-sm">&nbsp;</div>
     </div>
diff --git a/www/plugins/es/templates/message/lookup_lg.html b/www/plugins/es/templates/message/lookup_lg.html
index 66349decf..ad7bc8ad7 100644
--- a/www/plugins/es/templates/message/lookup_lg.html
+++ b/www/plugins/es/templates/message/lookup_lg.html
@@ -142,7 +142,7 @@
     </div>
 
     <!-- list -->
-    <ng-include src="'plugins/es/templates/message/list.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/message/list.html'"></ng-include>
 
   </ion-content>
 
diff --git a/www/plugins/es/templates/message/modal_compose.html b/www/plugins/es/templates/message/modal_compose.html
index 5ed1803c0..ae6aa7d02 100644
--- a/www/plugins/es/templates/message/modal_compose.html
+++ b/www/plugins/es/templates/message/modal_compose.html
@@ -10,6 +10,6 @@
   </ion-header-bar>
 
   <ion-content scroll="true">
-      <ng-include src="'plugins/es/templates/message/compose_form.html'"></ng-include>
+      <ng-include src="::'plugins/es/templates/message/compose_form.html'"></ng-include>
   </ion-content>
 </ion-modal-view>
diff --git a/www/plugins/es/templates/message/tabs/tab_list.html b/www/plugins/es/templates/message/tabs/tab_list.html
index 073af8626..04c426b1f 100644
--- a/www/plugins/es/templates/message/tabs/tab_list.html
+++ b/www/plugins/es/templates/message/tabs/tab_list.html
@@ -18,7 +18,7 @@
     <cs-extension-point name="buttons"></cs-extension-point>
 
     <!-- list -->
-    <ng-include src="'plugins/es/templates/message/list.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/message/list.html'"></ng-include>
 
   </ion-content>
 
diff --git a/www/plugins/es/templates/network/items_peers.html b/www/plugins/es/templates/network/items_peers.html
index d2c6b6225..c253f18f0 100644
--- a/www/plugins/es/templates/network/items_peers.html
+++ b/www/plugins/es/templates/network/items_peers.html
@@ -30,7 +30,7 @@
        ng-class="::ionItemClass"
        id="{{helptipPrefix}}-peer-{{$index}}"
        ng-click="selectPeer(peer)"
-       ng-include="'plugins/es/templates/network/item_content_peer.html'">
+       ng-include="::'plugins/es/templates/network/item_content_peer.html'">
   </div>
 
 </div>
diff --git a/www/plugins/es/templates/network/modal_network.html b/www/plugins/es/templates/network/modal_network.html
index efe1c1dd3..2e2503a27 100644
--- a/www/plugins/es/templates/network/modal_network.html
+++ b/www/plugins/es/templates/network/modal_network.html
@@ -29,7 +29,7 @@
         </div>
       </div>
 
-      <ng-include src="'plugins/es/templates/network/items_peers.html'"></ng-include>
+      <ng-include src="::'plugins/es/templates/network/items_peers.html'"></ng-include>
 
 	  </div>
   </ion-content>
diff --git a/www/plugins/es/templates/network/popover_network.html b/www/plugins/es/templates/network/popover_network.html
index ce40b9175..517299469 100644
--- a/www/plugins/es/templates/network/popover_network.html
+++ b/www/plugins/es/templates/network/popover_network.html
@@ -14,7 +14,7 @@
   </ion-header-bar>
   <ion-content  scroll="true">
     <div class="list no-padding">
-      <ng-include src="'plugins/es/templates/network/items_peers.html'"></ng-include>
+      <ng-include src="::'plugins/es/templates/network/items_peers.html'"></ng-include>
     </div>
   </ion-content>
 
diff --git a/www/plugins/es/templates/network/view_es_network.html b/www/plugins/es/templates/network/view_es_network.html
index 907960773..744c2d3f9 100644
--- a/www/plugins/es/templates/network/view_es_network.html
+++ b/www/plugins/es/templates/network/view_es_network.html
@@ -43,7 +43,7 @@
 
         <div id="helptip-network-peers" style="display: block"></div>
 
-        <ng-include src="'plugins/es/templates/network/items_peers.html'"></ng-include>
+        <ng-include src="::'plugins/es/templates/network/items_peers.html'"></ng-include>
       </div>
 
       <div class="col col-33 " ng-controller="ESLastDocumentsCtrl">
@@ -72,7 +72,7 @@
           </div>
         </div>
 
-        <ng-include src="'plugins/es/templates/document/list_documents.html'"></ng-include>
+        <ng-include src="::'plugins/es/templates/document/list_documents.html'"></ng-include>
 
       </div>
     </div>
diff --git a/www/plugins/es/templates/network/view_es_peer.html b/www/plugins/es/templates/network/view_es_peer.html
index 882ff8550..063954fb7 100644
--- a/www/plugins/es/templates/network/view_es_peer.html
+++ b/www/plugins/es/templates/network/view_es_peer.html
@@ -125,7 +125,7 @@
                class="item item-peer item-icon-left ink"
                ng-class="::ionItemClass"
                ng-click="selectPeer(peer)"
-               ng-include="'plugins/es/templates/network/item_content_peer.html'">
+               ng-include="::'plugins/es/templates/network/item_content_peer.html'">
           </div>
 
         </div>
diff --git a/www/plugins/es/templates/notification/popover_notification.html b/www/plugins/es/templates/notification/popover_notification.html
index e33241d6e..468a045f6 100644
--- a/www/plugins/es/templates/notification/popover_notification.html
+++ b/www/plugins/es/templates/notification/popover_notification.html
@@ -17,7 +17,7 @@
       COMMON.NOTIFICATIONS.NO_RESULT
     </div>
 
-    <ng-include src="'plugins/es/templates/notification/list_notification.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/notification/list_notification.html'"></ng-include>
 
   </ion-content>
 
diff --git a/www/plugins/es/templates/notification/view_notifications.html b/www/plugins/es/templates/notification/view_notifications.html
index 98226cfec..8d350873c 100644
--- a/www/plugins/es/templates/notification/view_notifications.html
+++ b/www/plugins/es/templates/notification/view_notifications.html
@@ -41,7 +41,7 @@
           COMMON.NOTIFICATIONS.NO_RESULT
         </div>
 
-        <ng-include src="'plugins/es/templates/notification/list_notification.html'"></ng-include>
+        <ng-include src="::'plugins/es/templates/notification/list_notification.html'"></ng-include>
 
 
       </div>
diff --git a/www/plugins/es/templates/registry/edit_record.html b/www/plugins/es/templates/registry/edit_record.html
index e001f7caa..565a813c9 100644
--- a/www/plugins/es/templates/registry/edit_record.html
+++ b/www/plugins/es/templates/registry/edit_record.html
@@ -61,7 +61,7 @@
               </div>
 
               <!-- pictures -->
-              <ng-include src="'plugins/es/templates/common/edit_pictures.html'"></ng-include>
+              <ng-include src="::'plugins/es/templates/common/edit_pictures.html'"></ng-include>
 
               <div class="item item-divider" translate>REGISTRY.GENERAL_DIVIDER</div>
 
@@ -115,10 +115,10 @@
               </div>
 
               <!-- position -->
-              <ng-include src="'plugins/es/templates/common/edit_position.html'" ng-controller="ESPositionEditCtrl as ctrl"></ng-include>
+              <ng-include src="::'plugins/es/templates/common/edit_position.html'" ng-controller="ESPositionEditCtrl as ctrl"></ng-include>
 
               <!-- social networks -->
-              <ng-include src="'plugins/es/templates/common/edit_socials.html'" ng-controller="ESSocialsEditCtrl"></ng-include>
+              <ng-include src="::'plugins/es/templates/common/edit_socials.html'" ng-controller="ESSocialsEditCtrl"></ng-include>
 
               <div class="item item-divider" translate>REGISTRY.TECHNICAL_DIVIDER</div>
 
diff --git a/www/plugins/es/templates/registry/view_record.html b/www/plugins/es/templates/registry/view_record.html
index 03730c7cb..1c2e95c59 100644
--- a/www/plugins/es/templates/registry/view_record.html
+++ b/www/plugins/es/templates/registry/view_record.html
@@ -28,7 +28,7 @@
             <i class="icon ion-location"></i> <span ng-bind-html="formData.city"></span>
           </span>
           <!-- likes -->
-          <small ng-include="'plugins/es/templates/common/view_likes.html'"></small>
+          <small ng-include="::'plugins/es/templates/common/view_likes.html'"></small>
         </h4>
 
       </div>
@@ -174,10 +174,10 @@
         <div class="lazy-load">
 
           <!-- pictures -->
-          <ng-include src="'plugins/es/templates/common/view_pictures.html'"></ng-include>
+          <ng-include src="::'plugins/es/templates/common/view_pictures.html'"></ng-include>
 
           <!-- comments -->
-          <ng-include src="'plugins/es/templates/common/view_comments.html'"></ng-include>
+          <ng-include src="::'plugins/es/templates/common/view_comments.html'"></ng-include>
         </div>
       </div>
 
diff --git a/www/plugins/es/templates/registry/view_wallet_pages.html b/www/plugins/es/templates/registry/view_wallet_pages.html
index 8ed4a938c..5d9650d47 100644
--- a/www/plugins/es/templates/registry/view_wallet_pages.html
+++ b/www/plugins/es/templates/registry/view_wallet_pages.html
@@ -32,7 +32,7 @@
       REGISTRY.NO_PAGE
     </div>
 
-    <ng-include src="'plugins/es/templates/registry/lookup_list.html'"></ng-include>
+    <ng-include src="::'plugins/es/templates/registry/lookup_list.html'"></ng-include>
 
   </ion-content>
 
diff --git a/www/plugins/es/templates/user/edit_profile.html b/www/plugins/es/templates/user/edit_profile.html
index 3bc148378..dcf19f97c 100644
--- a/www/plugins/es/templates/user/edit_profile.html
+++ b/www/plugins/es/templates/user/edit_profile.html
@@ -107,12 +107,12 @@
             </ion-item>
 
             <!-- position -->
-            <ng-include src="'plugins/es/templates/common/edit_position.html'" ng-controller="ESPositionEditCtrl as ctrl"></ng-include>
+            <ng-include src="::'plugins/es/templates/common/edit_position.html'" ng-controller="ESPositionEditCtrl as ctrl"></ng-include>
 
           </div>
 
           <!-- social networks -->
-          <ng-include src="'plugins/es/templates/common/edit_socials.html'" ng-controller="ESSocialsEditCtrl"></ng-include>
+          <ng-include src="::'plugins/es/templates/common/edit_socials.html'" ng-controller="ESSocialsEditCtrl"></ng-include>
 
           <div class="list item-text-wrap {{::motion.ionListClass}}">
 
diff --git a/www/plugins/es/templates/wallet/view_wallet_extend.html b/www/plugins/es/templates/wallet/view_wallet_extend.html
index 213a71a24..64aae561f 100644
--- a/www/plugins/es/templates/wallet/view_wallet_extend.html
+++ b/www/plugins/es/templates/wallet/view_wallet_extend.html
@@ -1,7 +1,7 @@
 <ng-if ng-if=":state:enable && extensionPoint === 'hero'" >
   <!-- likes -->
   <small class="light" style="display: inline-block;"
-         ng-include="'plugins/es/templates/common/view_likes.html'"
+         ng-include="::'plugins/es/templates/common/view_likes.html'"
          ng-init="canEdit=true"></small>
 </ng-if>
 
@@ -37,7 +37,7 @@
     <small trust-as-html="'PROFILE.PROFILE_DIVIDER_HELP'|translate"></small>
   </div>
 
-  <ng-include src="'plugins/es/templates/user/items_profile.html'" ng-init="showName=true"></ng-include>
+  <ng-include src="::'plugins/es/templates/user/items_profile.html'" ng-init="showName=true"></ng-include>
 
   <!-- subscriptions -->
   <div class="item item-divider item-divider-top-border">
diff --git a/www/plugins/es/templates/wot/view_identity_extend.html b/www/plugins/es/templates/wot/view_identity_extend.html
index 0efe64821..722691a34 100644
--- a/www/plugins/es/templates/wot/view_identity_extend.html
+++ b/www/plugins/es/templates/wot/view_identity_extend.html
@@ -2,7 +2,7 @@
 <ng-if ng-if=":state:enable && extensionPoint === 'hero'">
   <!-- likes -->
   <small class="light" style="display: inline-block;"
-         ng-include="'plugins/es/templates/common/view_likes.html'"></small>
+         ng-include="::'plugins/es/templates/common/view_likes.html'"></small>
 </ng-if>
 
 <!-- Top fab buttons -->
@@ -49,6 +49,6 @@
     <small translate>PROFILE.PROFILE_DIVIDER_HELP</small>
   </div>
 
-  <ng-include src="'plugins/es/templates/user/items_profile.html'" ng-init="showName=false;"></ng-include>
+  <ng-include src="::'plugins/es/templates/user/items_profile.html'" ng-init="showName=false;"></ng-include>
 
 </ng-if>
diff --git a/www/plugins/graph/js/services/data-services.js b/www/plugins/graph/js/services/data-services.js
index 68b2638ec..8c9ba109c 100644
--- a/www/plugins/graph/js/services/data-services.js
+++ b/www/plugins/graph/js/services/data-services.js
@@ -4,7 +4,8 @@ angular.module('cesium.graph.data.services', ['cesium.wot.services', 'cesium.es.
     'ngInject';
 
     var
-      currencyCache = csCache.get('gpData-currency-', csCache.constants.SHORT),
+      cachePrefix = 'gpData-',
+      currencyCache = csCache.get(cachePrefix + 'currency-', csCache.constants.SHORT),
       exports = {
         node: {},
         wot: {},
@@ -126,9 +127,9 @@ angular.module('cesium.graph.data.services', ['cesium.wot.services', 'cesium.es.
       options = options || {};
       var withCache = angular.isDefined(options.withCache) ? options.withCache : true; // enable by default
 
-      var cachekKey = [currency, JSON.stringify(options)].join('-');
+      var cacheKey = [currency, JSON.stringify(options)].join('-');
       if (withCache) {
-        var result = currencyCache.get(cachekKey);
+        var result = currencyCache.get(cacheKey);
         if (result) {
           // should be already a promise (previous call still running)
           if (!result.blocks) {
@@ -213,10 +214,10 @@ angular.module('cesium.graph.data.services', ['cesium.wot.services', 'cesium.es.
           }, []);
 
           // replace promise in cache, with data
-          currencyCache.put(cachekKey, result);
+          currencyCache.put(cacheKey, result);
           return result;
         });
-      currencyCache.put(cachekKey, promise);
+      currencyCache.put(cacheKey, promise);
 
       return promise;
     };
@@ -277,7 +278,7 @@ angular.module('cesium.graph.data.services', ['cesium.wot.services', 'cesium.es.
           // prepare next loop
           ranges = [];
 
-          if (jobs.length == 10) {
+          if (jobs.length === 10) {
             console.error('Too many parallel jobs!');
             from = moment.unix(options.endTime).utc(); // stop while
           }
@@ -962,9 +963,15 @@ angular.module('cesium.graph.data.services', ['cesium.wot.services', 'cesium.es.
         });
     };
 
-    return exports;
-  })
+    function cleanAllCache() {
+      console.debug("[graph] Cleaning cache {prefix: '{0}'}...".format(cachePrefix));
+      csCache.clear(cachePrefix);
+    }
 
+    // Listen if node changed
+    esHttp.api.node.on.stop($rootScope, cleanAllCache, this);
 
+    return exports;
+  })
 
 ;
diff --git a/www/plugins/graph/templates/account/graph_balance.html b/www/plugins/graph/templates/account/graph_balance.html
index 7939969f6..31e4709e1 100644
--- a/www/plugins/graph/templates/account/graph_balance.html
+++ b/www/plugins/graph/templates/account/graph_balance.html
@@ -21,4 +21,4 @@
       </canvas>
     </div>
 
-    <ng-include src="'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
+    <ng-include src="::'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
diff --git a/www/plugins/graph/templates/account/view_stats.html b/www/plugins/graph/templates/account/view_stats.html
index cac7dec8b..87ff0c0d4 100644
--- a/www/plugins/graph/templates/account/view_stats.html
+++ b/www/plugins/graph/templates/account/view_stats.html
@@ -23,7 +23,7 @@
 
         <div class="item no-padding-xs"
              ng-if="!loading"
-             ng-include="'plugins/graph/templates/account/graph_balance.html'"
+             ng-include="::'plugins/graph/templates/account/graph_balance.html'"
              ng-init="setSize(350, 1000)">
         </div>
       </ng-controller>
@@ -31,7 +31,7 @@
     </div>
 
     <div class="item no-padding-xs"
-         ng-include="'plugins/graph/templates/account/graph_sum_tx.html'"
+         ng-include="::'plugins/graph/templates/account/graph_sum_tx.html'"
          ng-controller="GpAccountSumTxCtrl">
     </div>
 
@@ -41,7 +41,7 @@
     </div>
 
     <div class="item no-padding-xs"
-         ng-include="'plugins/graph/templates/account/graph_certifications.html'"
+         ng-include="::'plugins/graph/templates/account/graph_certifications.html'"
          ng-controller="GpAccountCertificationCtrl"
          ng-init="setSize(350, 1000)">
     </div>-->
diff --git a/www/plugins/graph/templates/blockchain/graph_tx_count.html b/www/plugins/graph/templates/blockchain/graph_tx_count.html
index def80eccc..bef1a313c 100644
--- a/www/plugins/graph/templates/blockchain/graph_tx_count.html
+++ b/www/plugins/graph/templates/blockchain/graph_tx_count.html
@@ -21,4 +21,4 @@
       </canvas>
     </div>
 
-    <ng-include src="'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
+    <ng-include src="::'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
diff --git a/www/plugins/graph/templates/blockchain/view_stats.html b/www/plugins/graph/templates/blockchain/view_stats.html
index 4ec97c1e6..a3393e1be 100644
--- a/www/plugins/graph/templates/blockchain/view_stats.html
+++ b/www/plugins/graph/templates/blockchain/view_stats.html
@@ -26,7 +26,7 @@
 
         <div class="item no-padding-xs no-padding-sm"
              ng-if="!loading"
-             ng-include="'plugins/graph/templates/blockchain/graph_tx_count.html'"
+             ng-include="::'plugins/graph/templates/blockchain/graph_tx_count.html'"
              ng-init="setSize(350, 1000)">
         </div>
       </ng-controller>
@@ -39,7 +39,7 @@
 
         <div class="item no-padding-xs no-padding-sm"
              ng-if="!loading"
-             ng-include="'plugins/graph/templates/blockchain/graph_block_issuers.html'"
+             ng-include="::'plugins/graph/templates/blockchain/graph_block_issuers.html'"
              ng-init="setSize(300, 750)">
         </div>
 
diff --git a/www/plugins/graph/templates/currency/tabs/tab_blocks_stats.html b/www/plugins/graph/templates/currency/tabs/tab_blocks_stats.html
index dfe962a0b..0183d13f2 100644
--- a/www/plugins/graph/templates/currency/tabs/tab_blocks_stats.html
+++ b/www/plugins/graph/templates/currency/tabs/tab_blocks_stats.html
@@ -1,7 +1,7 @@
 <ion-view>
   <ion-content>
     <div
-       ng-include="'plugins/graph/templates/blockchain/graph_tx_count.html'"
+       ng-include="::'plugins/graph/templates/blockchain/graph_tx_count.html'"
        ng-controller="GpBlockchainTxCountCtrl"
        ng-init="setSize(500,700,false)">
       </div>
diff --git a/www/plugins/graph/templates/currency/tabs/tab_network_stats.html b/www/plugins/graph/templates/currency/tabs/tab_network_stats.html
index ffa8acb63..ec8f5c0d6 100644
--- a/www/plugins/graph/templates/currency/tabs/tab_network_stats.html
+++ b/www/plugins/graph/templates/currency/tabs/tab_network_stats.html
@@ -3,7 +3,7 @@
 
     <div class="list">
       <div class="item"
-         ng-include="'plugins/graph/templates/blockchain/graph_block_issuers.html'"
+         ng-include="::'plugins/graph/templates/blockchain/graph_block_issuers.html'"
          ng-controller="GpBlockchainIssuersCtrl"
            ng-init="setSize(500,700,true)">
       </div>
diff --git a/www/plugins/graph/templates/currency/tabs/tab_parameters_stats.html b/www/plugins/graph/templates/currency/tabs/tab_parameters_stats.html
index 80465c1d4..364bdb587 100644
--- a/www/plugins/graph/templates/currency/tabs/tab_parameters_stats.html
+++ b/www/plugins/graph/templates/currency/tabs/tab_parameters_stats.html
@@ -10,7 +10,7 @@
 
         <!-- Monetary mass -->
         <div class="item"
-             ng-include="'plugins/graph/templates/currency/graph_monetary_mass.html'"
+             ng-include="::'plugins/graph/templates/currency/graph_monetary_mass.html'"
              ng-init="setSize(500,700,true)">
         </div>
       </ng-container>
@@ -18,7 +18,7 @@
       <!-- DU -->
       <ng-container ng-controller="GpCurrencyDUCtrl">
         <div class="item"
-             ng-include="'plugins/graph/templates/currency/graph_du.html'"
+             ng-include="::'plugins/graph/templates/currency/graph_du.html'"
              ng-init="setSize(500,700,true)">
         </div>
       </ng-container>
diff --git a/www/plugins/graph/templates/currency/tabs/tab_wot_stats.html b/www/plugins/graph/templates/currency/tabs/tab_wot_stats.html
index c058e9904..336648d43 100644
--- a/www/plugins/graph/templates/currency/tabs/tab_wot_stats.html
+++ b/www/plugins/graph/templates/currency/tabs/tab_wot_stats.html
@@ -6,7 +6,7 @@
 
     <div class="list no-padding">
       <div class="item no-padding-top"
-           ng-include="'plugins/graph/templates/currency/graph_members_count.html'"
+           ng-include="::'plugins/graph/templates/currency/graph_members_count.html'"
            ng-init="setSize(600,700,false)">
       </div>
     </div>
diff --git a/www/plugins/graph/templates/currency/view_currency_extend.html b/www/plugins/graph/templates/currency/view_currency_extend.html
index 5b6317b37..556ed85c2 100644
--- a/www/plugins/graph/templates/currency/view_currency_extend.html
+++ b/www/plugins/graph/templates/currency/view_currency_extend.html
@@ -4,7 +4,7 @@
 
   <ng-if ng-if="!smallscreen">
     <div class="item padding-left padding-right no-padding-xs no-padding-sm"
-         ng-include="'plugins/graph/templates/currency/graph_monetary_mass.html'"
+         ng-include="::'plugins/graph/templates/currency/graph_monetary_mass.html'"
          ng-controller="GpCurrencyMonetaryMassCtrl"
          ng-init="displayShareAxis=false;">
     </div>
@@ -30,7 +30,7 @@
 
   <ng-if ng-if="!smallscreen">
     <div class="item padding-left padding-right no-padding-xs no-padding-sm"
-         ng-include="'plugins/graph/templates/currency/graph_members_count.html'"
+         ng-include="::'plugins/graph/templates/currency/graph_members_count.html'"
          ng-controller="GpCurrencyMembersCountCtrl">
     </div>
     <div class="item buttons no-padding-top ">
@@ -55,7 +55,7 @@
 
   <div class="item padding-left padding-right no-padding-xs no-padding-sm"
        ng-if="!smallscreen"
-       ng-include="'plugins/graph/templates/blockchain/graph_block_issuers.html'"
+       ng-include="::'plugins/graph/templates/blockchain/graph_block_issuers.html'"
        ng-controller="GpBlockchainIssuersCtrl">
   </div>
 
diff --git a/www/plugins/graph/templates/currency/view_stats_lg.html b/www/plugins/graph/templates/currency/view_stats_lg.html
index 03abfb8bc..bf1c64ca4 100644
--- a/www/plugins/graph/templates/currency/view_stats_lg.html
+++ b/www/plugins/graph/templates/currency/view_stats_lg.html
@@ -18,7 +18,7 @@
         </div>
 
         <div class="item no-padding-xs" ng-if="!loading"
-             ng-include="'plugins/graph/templates/currency/graph_monetary_mass.html'"
+             ng-include="::'plugins/graph/templates/currency/graph_monetary_mass.html'"
              ng-init="setSize(250, 1000)">
         </div>
 
@@ -38,7 +38,7 @@
       <ng-controller ng-controller="GpCurrencyDUCtrl" >
         <div class="item no-padding-xs"
              ng-if="!loading"
-             ng-include="'plugins/graph/templates/currency/graph_du.html'"
+             ng-include="::'plugins/graph/templates/currency/graph_du.html'"
              ng-init="setSize(250, 1000)">
         </div>
       </ng-controller>
@@ -47,7 +47,7 @@
       <ng-controller ng-controller="GpCurrencyMembersCountCtrl" >
       <div class="item no-padding-xs"
            ng-if="!loading"
-           ng-include="'plugins/graph/templates/currency/graph_members_count.html'"
+           ng-include="::'plugins/graph/templates/currency/graph_members_count.html'"
            ng-init="setSize(250, 1000)">
       </div>
 
diff --git a/www/plugins/graph/templates/docstats/graph.html b/www/plugins/graph/templates/docstats/graph.html
index 7a9b7939f..1cf0bc404 100644
--- a/www/plugins/graph/templates/docstats/graph.html
+++ b/www/plugins/graph/templates/docstats/graph.html
@@ -20,4 +20,4 @@
           chart-click="onChartClick">
   </canvas>
 
-  <ng-include src="'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
+  <ng-include src="::'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
diff --git a/www/plugins/graph/templates/docstats/view_stats.html b/www/plugins/graph/templates/docstats/view_stats.html
index 88fc2cffd..4ea84231d 100644
--- a/www/plugins/graph/templates/docstats/view_stats.html
+++ b/www/plugins/graph/templates/docstats/view_stats.html
@@ -15,7 +15,7 @@
 
       <div class="item no-padding-xs no-padding-sm" ng-if="!loading"
            ng-repeat="chart in charts"
-           ng-include="'plugins/graph/templates/docstats/graph.html'"
+           ng-include="::'plugins/graph/templates/docstats/graph.html'"
            ng-init="setSize(250, 1000)">
       </div>
 
diff --git a/www/plugins/graph/templates/network/view_peer_stats.html b/www/plugins/graph/templates/network/view_peer_stats.html
index bc552a2e8..92845974d 100644
--- a/www/plugins/graph/templates/network/view_peer_stats.html
+++ b/www/plugins/graph/templates/network/view_peer_stats.html
@@ -18,7 +18,7 @@
       </div>
 
       <div class="item no-padding-xs"
-           ng-include="'plugins/graph/templates/blockchain/graph_tx_count.html'"
+           ng-include="::'plugins/graph/templates/blockchain/graph_tx_count.html'"
            ng-init="setSize(350, 1000)">
       </div>
 
diff --git a/www/plugins/graph/templates/synchro/graph.html b/www/plugins/graph/templates/synchro/graph.html
index 19ac3b723..cfd3ba8f5 100644
--- a/www/plugins/graph/templates/synchro/graph.html
+++ b/www/plugins/graph/templates/synchro/graph.html
@@ -19,4 +19,4 @@
           chart-options="chart.options">
   </canvas>
 
-  <ng-include src="'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
+  <ng-include src="::'plugins/graph/templates/common/graph_range_bar.html'"></ng-include>
diff --git a/www/plugins/graph/templates/synchro/view_stats.html b/www/plugins/graph/templates/synchro/view_stats.html
index e7275137a..ac9d18b1d 100644
--- a/www/plugins/graph/templates/synchro/view_stats.html
+++ b/www/plugins/graph/templates/synchro/view_stats.html
@@ -14,7 +14,7 @@
 
       <div class="item no-padding-xs" ng-if="!loading"
            ng-repeat="chart in charts"
-           ng-include="'plugins/graph/templates/synchro/graph.html'"
+           ng-include="::'plugins/graph/templates/synchro/graph.html'"
            ng-init="setSize(250, 1000)">
       </div>
 
diff --git a/www/templates/api/home.html b/www/templates/api/home.html
index 852bbf795..f838f5028 100644
--- a/www/templates/api/home.html
+++ b/www/templates/api/home.html
@@ -31,7 +31,7 @@
 
         <div class="light-bg no-padding">
           <!-- include documentation -->
-          <ng-include src="'templates/api/doc.html'"></ng-include>
+          <ng-include src="::'templates/api/doc.html'"></ng-include>
         </div>
       </div>
 
diff --git a/www/templates/api/transfer.html b/www/templates/api/transfer.html
index f0520fcff..dbd18ae7f 100644
--- a/www/templates/api/transfer.html
+++ b/www/templates/api/transfer.html
@@ -45,7 +45,7 @@
             </div>
           </div>
 
-          <ng-include src="'templates/login/form_login.html'"></ng-include>
+          <ng-include src="::'templates/login/form_login.html'"></ng-include>
 
         </div>
         <br class="hidden-xs"/>
diff --git a/www/templates/blockchain/item_block.html b/www/templates/blockchain/item_block.html
index 49714cdc6..e9eec8709 100644
--- a/www/templates/blockchain/item_block.html
+++ b/www/templates/blockchain/item_block.html
@@ -1,19 +1,19 @@
-<a name="block-{{:rebind:block.number}}"></a>
-<ion-item id="block-{{:rebind:block.number}}"
+<a name="block-{{::block.number}}"></a>
+<ion-item id="block-{{::block.number}}"
           class="item item-icon-left item-block {{::ionItemClass}}"
-          ng-class="{'ink': !block.empty||!block.compacted, 'item-block-empty': block.empty, 'compacted': block.compacted && compactMode}"
+          ng-class=":rebind:{'ink': !block.empty||!block.compacted, 'item-block-empty': block.empty, 'compacted': block.compacted && compactMode}"
           ng-click="selectBlock(block)">
 
-  <i class="icon ion-cube stable" ng-if=":rebind:(!block.empty && !block.avatar)"></i>
-  <i class="avatar" ng-if=":rebind:!block.empty && block.avatar" style="background-image: url('{{:rebind:block.avatar.src}}')"></i>
+  <i class="icon ion-cube stable" ng-if="(!block.empty && !block.avatar)"></i>
+  <i class="avatar" ng-if="!block.empty && block.avatar" style="background-image: url('{{block.avatar.src}}')"></i>
 
   <div class="row no-padding" ng-if=":rebind:!block.compacted || !compactMode">
     <div class="col" style="min-width: 110px; max-width: 130px;">
-      <h4 ng-class="{'gray': block.compacted, 'dark': !block.compacted}">
+      <h4 ng-class=":rebind:{'gray': block.compacted, 'dark': !block.compacted}">
         <i class="ion-clock"></i>
         {{:rebind:block.medianTime|medianDate}}
       </h4>
-      <h4 ng-if="!block.empty">
+      <h4 ng-if=":rebind:!block.empty">
         <!-- joiners/leavers -->
         <ng-if ng-if=":rebind:block.joinersCount||(block.excludedCount-block.revokedCount)">
           <i class="dark ion-person"></i>
@@ -33,7 +33,7 @@
     </div>
 
     <div class="col col-20">
-      <span class="badge " ng-class="{'badge-balanced': !$index , 'badge-calm': $index && !block.compacted && !block.empty}">{{:rebind:block.number|formatInteger}}</span>
+      <span class="badge " ng-class=":rebind:{'badge-balanced': !$index , 'badge-calm': $index && !block.compacted && !block.empty}">{{::block.number|formatInteger}}</span>
     </div>
 
   </div>
diff --git a/www/templates/blockchain/item_block_empty_lg.html b/www/templates/blockchain/item_block_empty_lg.html
index aa217c2a0..512e7e13f 100644
--- a/www/templates/blockchain/item_block_empty_lg.html
+++ b/www/templates/blockchain/item_block_empty_lg.html
@@ -1,7 +1,7 @@
 <a name="block-{{::block.number}}"></a>
 <div id="block-{{::block.number}}"
           class="item item-block item-icon-left item-block-empty"
-          ng-class="{'compacted': block.compacted && compactMode}"
+          ng-class=":rebind:{'compacted': block.compacted && compactMode}"
           ng-click="selectBlock(block)"
           >
   <div class="row no-padding" ng-if=":rebind:!block.compacted || !compactMode">
diff --git a/www/templates/blockchain/items_blocks.html b/www/templates/blockchain/items_blocks.html
index 939336dcc..2c73f5a70 100644
--- a/www/templates/blockchain/items_blocks.html
+++ b/www/templates/blockchain/items_blocks.html
@@ -7,8 +7,8 @@
       BLOCKCHAIN.LOOKUP.NO_BLOCK
     </div>
     <!-- blocks -->
-    <ng-repeat ng-repeat="block in :rebind:search.results track by block.number"
-               ng-include="'templates/blockchain/item_block.html'">
+    <ng-repeat ng-repeat="block in search.results track by block.number"
+               ng-include="::'templates/blockchain/item_block.html'">
     </ng-repeat>
   </ion-list>
 
diff --git a/www/templates/blockchain/list_blocks.html b/www/templates/blockchain/list_blocks.html
index 5721ec669..aa4664533 100644
--- a/www/templates/blockchain/list_blocks.html
+++ b/www/templates/blockchain/list_blocks.html
@@ -8,8 +8,8 @@
       BLOCKCHAIN.LOOKUP.NO_BLOCK
     </div>
     <!-- blocks -->
-    <ng-repeat ng-repeat="block in :rebind:search.results track by block.number"
-               ng-include="'templates/blockchain/item_block.html'">
+    <ng-repeat ng-repeat="block in search.results track by block.number"
+               ng-include="::'templates/blockchain/item_block.html'">
     </ng-repeat>
   </ion-list>
 
diff --git a/www/templates/blockchain/list_blocks_lg.html b/www/templates/blockchain/list_blocks_lg.html
index 8d8d1ca97..3502ff3df 100644
--- a/www/templates/blockchain/list_blocks_lg.html
+++ b/www/templates/blockchain/list_blocks_lg.html
@@ -8,7 +8,7 @@
         <i class="icon ion-navicon"></i>
         <b class="ion-arrow-down-b" style="position: absolute; top: -2px; left: 4px; font-size: 8px;"></b>
         <b class="ion-arrow-up-b" style="position: absolute; top: 10px; left: 4px; font-size: 8px;"></b>
-        <span>{{'BLOCKCHAIN.LOOKUP.BTN_COMPACT'|translate}}</span>
+        <span>{{:locale:'BLOCKCHAIN.LOOKUP.BTN_COMPACT'|translate}}</span>
       </a>
     </div>
   </div>
@@ -18,8 +18,8 @@
   </div>
 
   <ion-list class="padding padding-xs list-blocks {{::motion.ionListClass}}">
-    <div class="padding gray" ng-if="!search.loading && !search.results.length" translate>
-      BLOCKCHAIN.LOOKUP.NO_BLOCK
+    <div class="padding gray" ng-if="!search.loading && !search.results.length">
+      {{:locale:'BLOCKCHAIN.LOOKUP.NO_BLOCK'|translate}}
     </div>
     <!-- blocks -->
     <ng-repeat ng-repeat="block in search.results track by block.id"
diff --git a/www/templates/blockchain/lookup.html b/www/templates/blockchain/lookup.html
index 92f845adf..6a244ff9b 100644
--- a/www/templates/blockchain/lookup.html
+++ b/www/templates/blockchain/lookup.html
@@ -5,6 +5,6 @@
 
 
   <ion-content class="padding no-padding-xs" scroll="true">
-    <ng-include src="'templates/blockchain/list_blocks.html'"></ng-include>
+    <ng-include src="::'templates/blockchain/list_blocks.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/templates/blockchain/lookup_lg.html b/www/templates/blockchain/lookup_lg.html
index 50d702569..6b386d8e3 100644
--- a/www/templates/blockchain/lookup_lg.html
+++ b/www/templates/blockchain/lookup_lg.html
@@ -4,6 +4,6 @@
   </ion-nav-title>
 
   <ion-content class="padding no-padding-xs no-padding-sm" scroll="true">
-    <ng-include src="'templates/blockchain/list_blocks_lg.html'"></ng-include>
+    <ng-include src="::'templates/blockchain/list_blocks_lg.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/templates/blockchain/view_block.html b/www/templates/blockchain/view_block.html
index 9493a1e2b..a55030332 100644
--- a/www/templates/blockchain/view_block.html
+++ b/www/templates/blockchain/view_block.html
@@ -150,7 +150,7 @@
             <div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.identitiesCount">
               <ion-item ng-repeat="identity in ::formData.identities"
                         class="item-border-large item-small-height"
-                        ng-include="'templates/blockchain/link_identity.html'">
+                        ng-include="::'templates/blockchain/link_identity.html'">
               </ion-item>
             </div>
           </ng-if>
@@ -167,7 +167,7 @@
             <div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.joinersCount">
               <ion-item ng-repeat="identity in ::formData.joiners"
                         class="item-border-large item-small-height"
-                        ng-include="'templates/blockchain/link_identity.html'">
+                        ng-include="::'templates/blockchain/link_identity.html'">
               </ion-item>
             </div>
           </ng-if>
@@ -186,7 +186,7 @@
             <div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.activesCount">
               <ion-item ng-repeat="identity in ::formData.actives"
                         class="item-border-large item-small-height"
-                        ng-include="'templates/blockchain/link_identity.html'">
+                        ng-include="::'templates/blockchain/link_identity.html'">
               </ion-item>
             </div>
           </ng-if>
@@ -205,7 +205,7 @@
             <div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.excludedCount">
               <ion-item ng-repeat="identity in ::formData.excluded"
                         class="item-border-large item-small-height"
-                        ng-include="'templates/blockchain/link_identity.html'">
+                        ng-include="::'templates/blockchain/link_identity.html'">
               </ion-item>
             </div>
           </ng-if>
@@ -224,7 +224,7 @@
             <div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.leaversCount">
               <ion-item ng-repeat="identity in ::formData.leavers"
                         class="item-border-large item-small-height"
-                        ng-include="'templates/blockchain/link_identity.html'">
+                        ng-include="::'templates/blockchain/link_identity.html'">
               </ion-item>
             </div>
           </ng-if>
@@ -243,7 +243,7 @@
             <div class="padding-bottom item-icon-left-padding item-icon-right-padding" ng-if="formData.revokedCount">
               <ion-item ng-repeat="identity in ::formData.revoked"
                         class="item-border-large item-small-height"
-                        ng-include="'templates/blockchain/link_identity.html'">
+                        ng-include="::'templates/blockchain/link_identity.html'">
               </ion-item>
             </div>
           </ng-if>
@@ -262,7 +262,7 @@
                 <div class="row no-padding">
                   <div class="col col-center no-padding">
                     <ng-repeat ng-repeat="cert in certs">
-                      <ng-include src="'templates/blockchain/link_identity.html'" onload="identity=cert.from"></ng-include>
+                      <ng-include src="::'templates/blockchain/link_identity.html'" onload="identity=cert.from"></ng-include>
                       <br/>
                     </ng-repeat>
                   </div>
@@ -270,7 +270,7 @@
                     <h2><i class="icon ion-arrow-right-a" ></i></h2>
                   </div>
                   <div class="col col-40 col-center no-padding"
-                       ng-include="'templates/blockchain/link_identity.html'"
+                       ng-include="::'templates/blockchain/link_identity.html'"
                        onload="identity=certs[0].to">
                   </div>
                 </div>
diff --git a/www/templates/currency/items_network.html b/www/templates/currency/items_network.html
index 42924b37d..8f1e36b72 100644
--- a/www/templates/currency/items_network.html
+++ b/www/templates/currency/items_network.html
@@ -53,4 +53,4 @@
       </div>
     </div>
 
-    <ng-include src="'templates/network/items_peers.html'" ></ng-include>
+    <ng-include src="::'templates/network/items_peers.html'" ></ng-include>
diff --git a/www/templates/currency/lookup.html b/www/templates/currency/lookup.html
index 8ba924024..67d776b15 100644
--- a/www/templates/currency/lookup.html
+++ b/www/templates/currency/lookup.html
@@ -2,6 +2,6 @@
   <ion-content class="padding no-padding-xs no-padding-sm">
     <h4 class="content double-padding-x" translate>CURRENCY.SELECT.CURRENCIES</h4>
 
-    <ng-include src="'templates/currency/lookup_form.html'"/>
+    <ng-include src="::'templates/currency/lookup_form.html'"/>
   </ion-content>
 </ion-view>
diff --git a/www/templates/currency/tabs/tab_blocks.html b/www/templates/currency/tabs/tab_blocks.html
index dc7e4c0fa..f97b25fe2 100644
--- a/www/templates/currency/tabs/tab_blocks.html
+++ b/www/templates/currency/tabs/tab_blocks.html
@@ -22,6 +22,6 @@
 
     <cs-extension-point name="buttons"></cs-extension-point>
 
-    <ng-include src="'templates/blockchain/list_blocks.html'"></ng-include>
+    <ng-include src="::'templates/blockchain/list_blocks.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/templates/currency/tabs/tab_network.html b/www/templates/currency/tabs/tab_network.html
index 95632439e..e205ea545 100644
--- a/www/templates/currency/tabs/tab_network.html
+++ b/www/templates/currency/tabs/tab_network.html
@@ -14,7 +14,7 @@
     </ion-refresher>
 
     <div class="list">
-      <ng-include src="'templates/currency/items_network.html'"></ng-include>
+      <ng-include src="::'templates/currency/items_network.html'"></ng-include>
     </div>
   </ion-content>
 </ion-view>
diff --git a/www/templates/currency/tabs/tab_parameters.html b/www/templates/currency/tabs/tab_parameters.html
index 5c0cbee65..16ba634fe 100644
--- a/www/templates/currency/tabs/tab_parameters.html
+++ b/www/templates/currency/tabs/tab_parameters.html
@@ -11,7 +11,7 @@
     </ion-refresher>
 
     <div class="list">
-      <ng-include src="'templates/currency/items_parameters.html'"></ng-include>
+      <ng-include src="::'templates/currency/items_parameters.html'"></ng-include>
     </div>
   </ion-content>
 </ion-view>
diff --git a/www/templates/currency/tabs/tab_wot.html b/www/templates/currency/tabs/tab_wot.html
index aa5f02bbb..b00e9b601 100644
--- a/www/templates/currency/tabs/tab_wot.html
+++ b/www/templates/currency/tabs/tab_wot.html
@@ -4,7 +4,7 @@
                    on-refresh="refresh()">
     </ion-refresher>
     <div class="list">
-      <ng-include src="'templates/currency/items_wot.html'"></ng-include>
+      <ng-include src="::'templates/currency/items_wot.html'"></ng-include>
     </div>
   </ion-content>
 </ion-view>
diff --git a/www/templates/currency/view_currency_lg.html b/www/templates/currency/view_currency_lg.html
index a22a26620..79940a809 100644
--- a/www/templates/currency/view_currency_lg.html
+++ b/www/templates/currency/view_currency_lg.html
@@ -56,7 +56,7 @@
           <div class="item item-divider">
             <span translate>CURRENCY.VIEW.MONEY_DIVIDER</span>
           </div>
-          <ng-include src="'templates/currency/items_parameters.html'"></ng-include>
+          <ng-include src="::'templates/currency/items_parameters.html'"></ng-include>
 
         </div>
 
@@ -65,7 +65,7 @@
           <div class="item item-divider">
             <span translate>CURRENCY.VIEW.WOT_DIVIDER</span>
           </div>
-          <ng-include src="'templates/currency/items_wot.html'"></ng-include>
+          <ng-include src="::'templates/currency/items_wot.html'"></ng-include>
 
         </div>
       </div>
diff --git a/www/templates/help/modal_help.html b/www/templates/help/modal_help.html
index c381d1a7c..e88580655 100644
--- a/www/templates/help/modal_help.html
+++ b/www/templates/help/modal_help.html
@@ -10,7 +10,7 @@
     <ion-content scroll="true" class="padding no-padding-xs">
 
       <div ng-class="listClass">
-        <ng-include src="'templates/help/help.html'"></ng-include>
+        <ng-include src="::'templates/help/help.html'"></ng-include>
       </div>
 
       <div class="padding hidden-xs text-center">
diff --git a/www/templates/help/view_help.html b/www/templates/help/view_help.html
index 4f050ce8e..7adbf3d4b 100644
--- a/www/templates/help/view_help.html
+++ b/www/templates/help/view_help.html
@@ -7,7 +7,7 @@
 
     <h1 class="hidden-xs hidden-sm" translate>HELP.TITLE</h1>
 
-    <ng-include src="'templates/help/help.html'"></ng-include>
+    <ng-include src="::'templates/help/help.html'"></ng-include>
 
   </ion-content>
 </ion-view>
diff --git a/www/templates/login/form_login.html b/www/templates/login/form_login.html
index 8fe264bc7..084e0746b 100644
--- a/www/templates/login/form_login.html
+++ b/www/templates/login/form_login.html
@@ -26,22 +26,22 @@
 
       <!-- Form content, depending of the login method -->
       <div ng-switch-when="SCRYPT_DEFAULT">
-        <ng-include src="'templates/login/form_scrypt.html'"></ng-include>
+        <ng-include src="::'templates/login/form_scrypt.html'"></ng-include>
       </div>
       <div ng-switch-when="SCRYPT_ADVANCED">
-        <ng-include src="'templates/login/form_scrypt_advanced.html'"></ng-include>
+        <ng-include src="::'templates/login/form_scrypt_advanced.html'"></ng-include>
       </div>
       <div ng-switch-when="PUBKEY">
-        <ng-include src="'templates/login/form_pubkey.html'"></ng-include>
+        <ng-include src="::'templates/login/form_pubkey.html'"></ng-include>
       </div>
       <div ng-switch-when="FILE">
-        <ng-include src="'templates/login/form_file_import.html'"></ng-include>
+        <ng-include src="::'templates/login/form_file_import.html'"></ng-include>
       </div>
        <div ng-switch-when="SCAN">
-         <ng-include src="'templates/login/form_scan.html'"></ng-include>
+         <ng-include src="::'templates/login/form_scan.html'"></ng-include>
        </div>
       <div ng-switch-default>
-        <ng-include src="'templates/login/form_scrypt.html'"></ng-include>
+        <ng-include src="::'templates/login/form_scrypt.html'"></ng-include>
       </div>
     </div>
 
diff --git a/www/templates/login/form_scrypt_advanced.html b/www/templates/login/form_scrypt_advanced.html
index 304993129..e7f21f3b1 100644
--- a/www/templates/login/form_scrypt_advanced.html
+++ b/www/templates/login/form_scrypt_advanced.html
@@ -51,5 +51,5 @@
   <span translate>INFO.FEATURES_NOT_IMPLEMENTED</span>
 </p>
 
-<ng-include src="'templates/login/form_scrypt.html'"></ng-include>
+<ng-include src="::'templates/login/form_scrypt.html'"></ng-include>
 
diff --git a/www/templates/login/modal_login.html b/www/templates/login/modal_login.html
index dd3796a35..3fd53fb7b 100644
--- a/www/templates/login/modal_login.html
+++ b/www/templates/login/modal_login.html
@@ -17,6 +17,6 @@
   </ion-header-bar>
 
   <ion-content scroll="true">
-    <ng-include src="'templates/login/form_login.html'"></ng-include>
+    <ng-include src="::'templates/login/form_login.html'"></ng-include>
   </ion-content>
 </ion-modal-view>
diff --git a/www/templates/network/item_content_peer.html b/www/templates/network/item_content_peer.html
index 54a79865e..5ccee2c5f 100644
--- a/www/templates/network/item_content_peer.html
+++ b/www/templates/network/item_content_peer.html
@@ -5,13 +5,13 @@
     <b class="icon-secondary ion-person" ng-if=":rebind:!peer.avatar"
        ng-class=":rebind:{'balanced': peer.online && peer.hasMainConsensusBlock, 'energized': peer.online && peer.hasConsensusBlock, 'gray': peer.online && !peer.hasConsensusBlock && !peer.hasMainConsensusBlock, 'stable': !peer.online}"
        style="left: 26px; top: -3px;"></b>
-    <i class="avatar" ng-if=":rebind:peer.avatar" style="background-image: url('{{:rebind:peer.avatar.src}}')"></i>
+    <i class="avatar" ng-if="::peer.avatar" style="background-image: url('{{::peer.avatar.src}}')"></i>
     <b class="icon-secondary assertive ion-close-circled" ng-if=":rebind:!peer.online" style="left: 37px; top: -10px;"></b>
 
     <div class="row no-padding">
       <div class="col no-padding">
         <h3 class="dark" ng-if=":rebind:!peer.bma.private">{{:rebind:peer.dns || peer.server}}</h3>
-        <h4 class="gray" ng-if=":rebind:peer.bma.private"><i class="ion-flash"></i> {{'NETWORK.VIEW.PRIVATE_ACCESS'|translate}}</h4>
+        <h4 class="gray" ng-if=":rebind:peer.bma.private"><i class="ion-flash"></i> {{:locale:'NETWORK.VIEW.PRIVATE_ACCESS'|translate}}</h4>
         <h4>
           <span class="gray" ng-if=":rebind:!peer.uid">
             <i class="ion-key"></i> {{:rebind:peer.pubkey|formatPubkey}}
@@ -61,7 +61,7 @@
       <div class="col col-20 no-padding text-center">
         <span id="{{$index === 0 ? helptipPrefix + '-peer-0-block' : ''}}"
             class="badge" ng-class=":rebind:{'badge-balanced': peer.hasMainConsensusBlock, 'badge-energized': peer.hasConsensusBlock, 'ng-hide': !peer.currentNumber && !peer.blockNumber }">
-          {{::!expertMode ? ('COMMON.BLOCK'|translate) : '' }}
+          {{:locale:!expertMode ? ('COMMON.BLOCK'|translate) : '' }}
           {{:rebind:(peer.currentNumber || peer.blockNumber) | formatInteger}}</span>
         <span class="badge badge-secondary" ng-if=":rebind:peer.consensusBlockDelta && expertMode">
           <i class="ion-clock"></i>&nbsp;
diff --git a/www/templates/network/items_peers.html b/www/templates/network/items_peers.html
index 48e4be65d..91d8f1049 100644
--- a/www/templates/network/items_peers.html
+++ b/www/templates/network/items_peers.html
@@ -1,34 +1,34 @@
 <div class="no-padding {{::motion.ionListClass}}">
 
   <div class="item item-text-wrap no-border done in gray no-padding-top no-padding-bottom inline text-italic" ng-if="::isHttps && expertMode">
-    <small><i class="icon ion-alert-circled"></i> {{'NETWORK.INFO.ONLY_SSL_PEERS'|translate}}</small>
+    <small><i class="icon ion-alert-circled"></i> {{:locale:'NETWORK.INFO.ONLY_SSL_PEERS'|translate}}</small>
   </div>
 
   <div class="item row row-header hidden-xs hidden-sm done in" ng-if="::expertMode">
     <a class="col col-header no-padding dark" ng-click="toggleSort('uid')">
       <cs-sort-icon asc="search.asc" sort="search.sort" toggle="'uid'"></cs-sort-icon>
-      {{'COMMON.UID' | translate}} / {{'COMMON.PUBKEY' | translate}}
+      {{:locale:'COMMON.UID' | translate}} / {{:locale:'COMMON.PUBKEY' | translate}}
     </a>
     <!-- API header -->
     <a class="no-padding dark hidden-md col col-15 col-header"
        ng-click="toggleSort('api')" ng-if=":rebind:!compactMode">
       <cs-sort-icon asc="search.asc" sort="search.sort" toggle="'api'"></cs-sort-icon>
-      {{'PEER.API' | translate}}
+      {{:locale:'PEER.API' | translate}}
     </a>
     <div class="no-padding dark hidden-md col col-15 col-header" ng-if=":rebind:compactMode"></div>
 
     <a class="no-padding dark col col-20 col-header"
        ng-click="toggleSort('difficulty')">
       <cs-sort-icon asc="search.asc" sort="search.sort" toggle="'difficulty'"></cs-sort-icon>
-      {{'PEER.DIFFICULTY' | translate}}
+      {{:locale:'PEER.DIFFICULTY' | translate}}
     </a>
     <a class="col col-20 col-header no-padding dark" ng-click="toggleSort('current_block')">
       <cs-sort-icon asc="search.asc" sort="search.sort" toggle="'current_block'"></cs-sort-icon>
-      {{'PEER.CURRENT_BLOCK' | translate}}
+      {{:locale:'PEER.CURRENT_BLOCK' | translate}}
     </a>
   </div>
 
-  <div ng-repeat="peer in :rebind:search.results track by peer.id"
+  <div ng-repeat="peer in search.results track by peer.id"
        class="item item-peer item-icon-left ink {{::ionItemClass}}"
        ng-class=":rebind:{'compacted': peer.compacted && compactMode}"
        id="{{::helptipPrefix}}-peer-{{::$index}}"
diff --git a/www/templates/network/modal_network.html b/www/templates/network/modal_network.html
index c627cd702..e64b4d15c 100644
--- a/www/templates/network/modal_network.html
+++ b/www/templates/network/modal_network.html
@@ -50,7 +50,7 @@
         </div>
       </div>
 
-      <ng-include src="'templates/network/items_peers.html'"></ng-include>
+      <ng-include src="::'templates/network/items_peers.html'"></ng-include>
 
 	  </div>
   </ion-content>
diff --git a/www/templates/network/popover_network.html b/www/templates/network/popover_network.html
index c62df9e33..04a2e9d7b 100644
--- a/www/templates/network/popover_network.html
+++ b/www/templates/network/popover_network.html
@@ -14,7 +14,7 @@
   </ion-header-bar>
   <ion-content  scroll="true">
     <div class="list no-padding">
-      <ng-include src="'templates/network/items_peers.html'"></ng-include>
+      <ng-include src="::'templates/network/items_peers.html'"></ng-include>
     </div>
   </ion-content>
 
diff --git a/www/templates/network/view_network.html b/www/templates/network/view_network.html
index 15c7f6d25..98ae3d181 100644
--- a/www/templates/network/view_network.html
+++ b/www/templates/network/view_network.html
@@ -34,12 +34,12 @@
                 <i class="icon ion-navicon"></i>
                 <b class="ion-arrow-down-b" style="position: absolute; top: -2px; left: 4px; font-size: 8px;"></b>
                 <b class="ion-arrow-up-b" style="position: absolute; top: 10px; left: 4px; font-size: 8px;"></b>
-                <span>{{'BLOCKCHAIN.LOOKUP.BTN_COMPACT'|translate}}</span>
+                <span>{{:locale:'BLOCKCHAIN.LOOKUP.BTN_COMPACT'|translate}}</span>
               </a>
 
               <a class="button button-text button-small hidden-xs hidden-sm ink"
                  ng-class="{'button-text-positive': search.type=='member'}"
-                 title="{{'PEER.MEMBER_PEERS'|translate}}"
+                 title="{{:locale:'PEER.MEMBER_PEERS'|translate}}"
                  ng-click="toggleSearchType('member')">
                 <i class="icon ion-person-stalker"></i>
                 {{'PEER.MEMBERS'|translate}}
@@ -50,7 +50,7 @@
                  title="{{'PEER.MIRROR_PEERS'|translate}}"
                  ng-click="toggleSearchType('mirror')" >
                 <i class="icon ion-radio-waves"></i>
-                {{'PEER.MIRRORS'|translate}}
+                {{:locale:'PEER.MIRRORS'|translate}}
               </a>
 
               <a class="button button-text button-small hidden-xs hidden-sm ink"
@@ -58,7 +58,7 @@
                  title="{{'PEER.OFFLINE_PEERS'|translate}}"
                  ng-click="toggleSearchType('offline')" >
                 <i class="icon ion-close-circled light-gray"></i>
-                <span>{{'PEER.OFFLINE'|translate}}</span>
+                <span>{{:locale:'PEER.OFFLINE'|translate}}</span>
               </a>
 
               <!-- Allow extension here -->
@@ -71,7 +71,7 @@
         <div id="helptip-network-blockchain" style="display: block"></div>
         <div id="helptip-network-peers" style="display: block"></div>
 
-        <ng-include src="'templates/network/items_peers.html'"></ng-include>
+        <ng-include src="::'templates/network/items_peers.html'"></ng-include>
       </div>
 
       <div class="col col-33" ng-controller="BlockLookupCtrl">
@@ -86,7 +86,7 @@
               <i class="icon ion-navicon"></i>
               <b class="icon-secondary ion-arrow-down-b" style="top: -8px; left: 5px; font-size: 8px;"></b>
               <b class="icon-secondary ion-arrow-up-b" style="top: 4px; left: 5px; font-size: 8px;"></b>
-              <span>{{'BLOCKCHAIN.LOOKUP.BTN_COMPACT'|translate}}</span>
+              <span>{{:locale:'BLOCKCHAIN.LOOKUP.BTN_COMPACT'|translate}}</span>
             </a>
 
             <!-- Allow extension here -->
@@ -95,7 +95,7 @@
           </div>
         </div>
 
-        <ng-include src="'templates/blockchain/list_blocks.html'"></ng-include>
+        <ng-include src="::'templates/blockchain/list_blocks.html'"></ng-include>
       </div>
     </div>
   </ion-content>
diff --git a/www/templates/network/view_peer.html b/www/templates/network/view_peer.html
index b081f7593..aa096e35f 100644
--- a/www/templates/network/view_peer.html
+++ b/www/templates/network/view_peer.html
@@ -123,7 +123,7 @@
           <div ng-repeat="peer in :rebind:peers track by peer.id"
                class="item item-peer item-icon-left ink {{::ionItemClass}}"
                ng-click="selectPeer(peer)"
-               ng-include="'templates/network/item_content_peer.html'">
+               ng-include="::'templates/network/item_content_peer.html'">
           </div>
 
         </div>
diff --git a/www/templates/wallet/list/modal_wallets.html b/www/templates/wallet/list/modal_wallets.html
index cd2d769a8..7c5d22160 100644
--- a/www/templates/wallet/list/modal_wallets.html
+++ b/www/templates/wallet/list/modal_wallets.html
@@ -19,7 +19,7 @@
       </ng-include>
 
       <ng-repeat ng-repeat="wallet in wallets track by wallet.id"
-                 ng-include="'templates/wallet/list/item_wallet_light.html'">
+                 ng-include="::'templates/wallet/list/item_wallet_light.html'">
       </ng-repeat>
     </ion-list>
 
diff --git a/www/templates/wallet/list/popover_wallets.html b/www/templates/wallet/list/popover_wallets.html
index 458d603b4..d19a89e37 100644
--- a/www/templates/wallet/list/popover_wallets.html
+++ b/www/templates/wallet/list/popover_wallets.html
@@ -24,7 +24,7 @@
       </ng-include>
 
       <ng-repeat ng-repeat="wallet in :rebind:wallets | filter:filterFn(formData) track by wallet.id"
-                 ng-include="'templates/wallet/list/item_wallet_light.html'">
+                 ng-include="::'templates/wallet/list/item_wallet_light.html'">
 
       </ng-repeat>
     </ion-list>
diff --git a/www/templates/wallet/modal_security.html b/www/templates/wallet/modal_security.html
index fc3d7d67c..8632da1ba 100644
--- a/www/templates/wallet/modal_security.html
+++ b/www/templates/wallet/modal_security.html
@@ -132,28 +132,28 @@
       </ion-slide-page>
 
       <ion-slide-page ng-if="option == 'revocation'">
-        <ng-include src="'templates/wallet/slides/slides_revocation_file.html'"></ng-include>
+        <ng-include src="::'templates/wallet/slides/slides_revocation_file.html'"></ng-include>
       </ion-slide-page>
 
       <ion-slide-page ng-if="login && option == 'saveID'">
-        <ng-include src="'templates/wallet/slides/slides_saveID_1.html'"></ng-include>
+        <ng-include src="::'templates/wallet/slides/slides_saveID_1.html'"></ng-include>
       </ion-slide-page>
       <ion-slide-page ng-if="login && option == 'saveID'">
-        <ng-include src="'templates/wallet/slides/slides_saveID_2.html'"></ng-include>
+        <ng-include src="::'templates/wallet/slides/slides_saveID_2.html'"></ng-include>
       </ion-slide-page>
 
       <ion-slide-page ng-if="option == 'recoverID'">
-        <ng-include src="'templates/wallet/slides/slides_recoverID_1.html'"></ng-include>
+        <ng-include src="::'templates/wallet/slides/slides_recoverID_1.html'"></ng-include>
       </ion-slide-page>
       <ion-slide-page ng-if="option == 'recoverID'">
-        <ng-include src="'templates/wallet/slides/slides_recoverID_2.html'"></ng-include>
+        <ng-include src="::'templates/wallet/slides/slides_recoverID_2.html'"></ng-include>
       </ion-slide-page>
       <ion-slide-page ng-if="option == 'recoverID'">
-        <ng-include src="'templates/wallet/slides/slides_recoverID_3.html'"></ng-include>
+        <ng-include src="::'templates/wallet/slides/slides_recoverID_3.html'"></ng-include>
       </ion-slide-page>
 
       <ion-slide-page ng-if="login && option == 'generateKeyfile'">
-        <ng-include src="'templates/wallet/slides/slides_generate_keyfile.html'"></ng-include>
+        <ng-include src="::'templates/wallet/slides/slides_generate_keyfile.html'"></ng-include>
       </ion-slide-page>
 
     </ion-slides>
diff --git a/www/templates/wallet/modal_transfer.html b/www/templates/wallet/modal_transfer.html
index b79a969cf..3fe3a3c46 100644
--- a/www/templates/wallet/modal_transfer.html
+++ b/www/templates/wallet/modal_transfer.html
@@ -8,7 +8,7 @@
   </ion-header-bar>
 
   <ion-content>
-    <ng-include src="'templates/wallet/transfer_form.html'"></ng-include>
+    <ng-include src="::'templates/wallet/transfer_form.html'"></ng-include>
   </ion-content>
   <!-- Digit keyboard - fix #30 -->
   <ion-digit-keyboard settings="digitKeyboardSettings" ng-if="digitKeyboardVisible"></ion-digit-keyboard>
diff --git a/www/templates/wallet/new_transfer.html b/www/templates/wallet/new_transfer.html
index d1a6fc1d4..7e81b08b4 100644
--- a/www/templates/wallet/new_transfer.html
+++ b/www/templates/wallet/new_transfer.html
@@ -17,7 +17,7 @@
           {{(formData.all ? 'TRANSFER.SUB_TITLE_ALL' : 'TRANSFER.SUB_TITLE')|translate}}
         </h2>
         <h4 class="hidden-xs hidden-sm">&nbsp;</h4>
-        <ng-include src="'templates/wallet/transfer_form.html'"></ng-include>
+        <ng-include src="::'templates/wallet/transfer_form.html'"></ng-include>
       </div>
       <div class="col col-20 hidden-xs hidden-sm">&nbsp;</div>
     </div>
diff --git a/www/templates/wallet/view_wallet_tx.html b/www/templates/wallet/view_wallet_tx.html
index 2090f10d3..6471ef145 100644
--- a/www/templates/wallet/view_wallet_tx.html
+++ b/www/templates/wallet/view_wallet_tx.html
@@ -119,7 +119,7 @@
             <div class="item item-pending item-tx item-icon-left"
                  ng-repeat="tx in formData.tx.pendings"
                  ng-init="pending=true;"
-                 ng-include="'templates/wallet/item_tx.html'">
+                 ng-include="::'templates/wallet/item_tx.html'">
             </div>
           </ng-if>
 
diff --git a/www/templates/wallet/view_wallet_tx_error.html b/www/templates/wallet/view_wallet_tx_error.html
index 9fd943933..f5502ed50 100644
--- a/www/templates/wallet/view_wallet_tx_error.html
+++ b/www/templates/wallet/view_wallet_tx_error.html
@@ -51,7 +51,7 @@
         <div class="item item-pending item-tx item-icon-left"
              ng-repeat="tx in formData.tx.errors | filter: filterReceivedTx"
              ng-init="pending=true;"
-             ng-include="'templates/wallet/item_tx.html'">
+             ng-include="::'templates/wallet/item_tx.html'">
         </div>
 
         <!-- Error sent TX -->
@@ -73,7 +73,7 @@
         <div class="item item-pending item-tx item-icon-left"
              ng-repeat="tx in formData.tx.errors | filter: filterSentTx"
              ng-init="error=true;"
-             ng-include="'templates/wallet/item_tx.html'">
+             ng-include="::'templates/wallet/item_tx.html'">
         </div>
 
       </div>
diff --git a/www/templates/wot/items_given_certifications.html b/www/templates/wot/items_given_certifications.html
index 68d37d34a..0cbd0b24c 100644
--- a/www/templates/wot/items_given_certifications.html
+++ b/www/templates/wot/items_given_certifications.html
@@ -34,7 +34,7 @@
   <a class="item item-avatar ink"
      ng-repeat="cert in formData.given_cert_pending"
      ui-sref="app.wot_identity({pubkey:cert.pubkey, uid:cert.uid})"
-     ng-include="'templates/wot/item_certification.html'">
+     ng-include="::'templates/wot/item_certification.html'">
   </a>
 
   <!-- validated given certifications -->
@@ -50,6 +50,6 @@
   <a class="item item-avatar ink"
         ng-repeat="cert in formData.given_cert"
         ui-sref="app.wot_identity({pubkey:cert.pubkey, uid:cert.uid})"
-        ng-include="'templates/wot/item_certification.html'">
+        ng-include="::'templates/wot/item_certification.html'">
   </a>
 </div>
diff --git a/www/templates/wot/items_received_certifications.html b/www/templates/wot/items_received_certifications.html
index b09d4864e..d4ec0b91c 100644
--- a/www/templates/wot/items_received_certifications.html
+++ b/www/templates/wot/items_received_certifications.html
@@ -38,7 +38,7 @@
           <a class="item item-avatar ink"
              ng-repeat="cert in formData.received_cert_pending"
              ui-sref="app.wot_identity({pubkey:cert.pubkey, uid:cert.uid})"
-             ng-include="'templates/wot/item_certification.html'">
+             ng-include="::'templates/wot/item_certification.html'">
           </a>
 
           <!-- valid certifications -->
@@ -53,6 +53,6 @@
           <a class="item item-avatar ink"
                 ng-repeat="cert in formData.received_cert"
                 ui-sref="app.wot_identity({pubkey:cert.pubkey, uid:cert.uid})"
-                ng-include="'templates/wot/item_certification.html'">
+                ng-include="::'templates/wot/item_certification.html'">
           </a>
         </div>
diff --git a/www/templates/wot/lookup_form.html b/www/templates/wot/lookup_form.html
index e2686ac67..849b55fad 100644
--- a/www/templates/wot/lookup_form.html
+++ b/www/templates/wot/lookup_form.html
@@ -171,7 +171,7 @@
         ng-model="item.checked"
         class="item item-border-large item-avatar ink"
         ng-click="toggleCheck($index, $event)">
-        <ng-include src="'templates/wot/item_content_identity.html'"></ng-include>
+        <ng-include src="::'templates/wot/item_content_identity.html'"></ng-include>
       </ion-checkbox>
     </div>
 
diff --git a/www/templates/wot/lookup_lg.html b/www/templates/wot/lookup_lg.html
index bce9b2b85..b033a6a9d 100644
--- a/www/templates/wot/lookup_lg.html
+++ b/www/templates/wot/lookup_lg.html
@@ -19,6 +19,6 @@
     <!-- Allow extension here -->
     <cs-extension-point name="top"></cs-extension-point>
 
-    <ng-include src="'templates/wot/lookup_form.html'"></ng-include>
+    <ng-include src="::'templates/wot/lookup_form.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/templates/wot/modal_lookup.html b/www/templates/wot/modal_lookup.html
index 2331bdf5a..617112e36 100644
--- a/www/templates/wot/modal_lookup.html
+++ b/www/templates/wot/modal_lookup.html
@@ -30,6 +30,6 @@
       </button>
     </div>
 
-    <ng-include src="'templates/wot/lookup_form.html'"></ng-include>
+    <ng-include src="::'templates/wot/lookup_form.html'"></ng-include>
   </ion-content>
 </ion-modal-view>
diff --git a/www/templates/wot/tabs/tab_given_certifications.html b/www/templates/wot/tabs/tab_given_certifications.html
index 5a5c54319..e3b57d0b9 100644
--- a/www/templates/wot/tabs/tab_given_certifications.html
+++ b/www/templates/wot/tabs/tab_given_certifications.html
@@ -9,7 +9,7 @@
       <ion-spinner icon="android"></ion-spinner>
     </div>
 
-    <ng-include src="'templates/wot/items_given_certifications.html'"></ng-include>
+    <ng-include src="::'templates/wot/items_given_certifications.html'"></ng-include>
   </ion-content>
 
   <!-- fab button -->
diff --git a/www/templates/wot/tabs/tab_lookup.html b/www/templates/wot/tabs/tab_lookup.html
index 4a8f30421..c377577f1 100644
--- a/www/templates/wot/tabs/tab_lookup.html
+++ b/www/templates/wot/tabs/tab_lookup.html
@@ -18,6 +18,6 @@
 
     <cs-extension-point name="buttons"></cs-extension-point>
 
-    <ng-include src="'templates/wot/lookup_form.html'"></ng-include>
+    <ng-include src="::'templates/wot/lookup_form.html'"></ng-include>
   </ion-content>
 </ion-view>
diff --git a/www/templates/wot/tabs/tab_received_certifications.html b/www/templates/wot/tabs/tab_received_certifications.html
index 98ee69959..5ffeb616b 100644
--- a/www/templates/wot/tabs/tab_received_certifications.html
+++ b/www/templates/wot/tabs/tab_received_certifications.html
@@ -9,7 +9,7 @@
       <ion-spinner icon="android"></ion-spinner>
     </div>
 
-    <ng-include src="'templates/wot/items_received_certifications.html'"></ng-include>
+    <ng-include src="::'templates/wot/items_received_certifications.html'"></ng-include>
   </ion-content>
 
   <!-- fab button -->
diff --git a/www/templates/wot/view_certifications.html b/www/templates/wot/view_certifications.html
index 609d29d16..91de2a53c 100644
--- a/www/templates/wot/view_certifications.html
+++ b/www/templates/wot/view_certifications.html
@@ -50,7 +50,7 @@
     <div class="row responsive-sm responsive-md responsive-lg">
       <!-- Received certifications -->
       <div class="col no-padding" ng-if="motions.receivedCertifications.enable">
-        <ng-include src="'templates/wot/items_received_certifications.html'"></ng-include>
+        <ng-include src="::'templates/wot/items_received_certifications.html'"></ng-include>
       </div>
 
       <!-- Avatar -->
@@ -91,7 +91,7 @@
 
       <!-- Given certifications -->
       <div class="col no-padding" ng-if="motions.givenCertifications.enable">
-        <ng-include src="'templates/wot/items_given_certifications.html'"></ng-include>
+        <ng-include src="::'templates/wot/items_given_certifications.html'"></ng-include>
       </div>
     </div>
   </ion-content>
-- 
GitLab