diff --git a/ippisite/ippidb/static/js/targetcentric-near-cavities-rows.js b/ippisite/ippidb/static/js/targetcentric-near-cavities-rows.js
new file mode 100644
index 0000000000000000000000000000000000000000..c903056e3623479cfadf1b707ec13e48edb19fbe
--- /dev/null
+++ b/ippisite/ippidb/static/js/targetcentric-near-cavities-rows.js
@@ -0,0 +1,22 @@
+$(document).ready(function(){
+    $(".asnyc-construction.now[data-cavity-id]").each(function () {
+        loadNearCavityRows($(this));
+    });
+});
+
+function loadNearCavityRows($row){
+    if($row.length==0)
+        return;
+    $row.addClass("loading");
+    $.ajax({
+        url: '/cavity/'+$row.data("cavityId")+'/near-cavities',
+        data: {'chaincount':$row.data("chaincount"), 'cavcount':$row.data("cavcount")},
+        success: function(data){
+            var $data=$(data);
+            if ($row.hasClass("show"))
+                $data.addClass("show");
+            $data.insertAfter($row);
+            $row.remove();
+        }
+    });
+}
\ No newline at end of file
diff --git a/ippisite/ippidb/templates/targetcentric.html b/ippisite/ippidb/templates/targetcentric.html
index 4191c16126c2e7a4545ad7fb48dad09472d5dace..05427d984172dbfe09ab178e755456d0f81eae56 100644
--- a/ippisite/ippidb/templates/targetcentric.html
+++ b/ippisite/ippidb/templates/targetcentric.html
@@ -8,6 +8,10 @@
 <link rel="stylesheet" href="/static/css/targetcentric.css">
 {% endblock %}
 {% block content %}
+{% block extra_js %}
+{{block.super}}
+<script src="{% static '/js/targetcentric-near-cavities-rows.js'%}"></script>
+{% endblock extra_js %}
 
 
 <div class="inner-wrap">
@@ -236,230 +240,11 @@ Comparison and druggability prediction of protein-ligand binding sites from phar
                             {% with chaincount=forloop.counter %}
                             {% for cavity in cavities %}
                                 {% with cavcount=forloop.counter %}
-                                <tr id="cavity_{{ cavity.id }}" class="table-light" >
-                                    <th class="zui-sticky-col text-nowrap">
-                                        
-                                        <i class="far fa-plus-square" style="cursor: pointer;" data-toggle="collapse" data-target=".collapseme{{ chaincount }}_{{ cavcount }}"></i>
-                                        <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?pdbsearch={{ cavity.chain.pdb.code }}">{{ cavity.chain.pdb.code }}</a>
-                                        / 
-                                        <span class="dropdown">
-                                        <div class="dropbtn" data-toggle="dropdown" title="uniprot: {{ cavity.chain.protein.uniprot_id }}">
-                                            {{ cavity.chain.pdb_chain_id }} | {{ cavity.chain.protein.short_name }}
-                                        </div>
-                                        <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ cavity.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ cavity.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
-                                        </div>
-                                        </span>
-                                        / 
-                                        <span class="dropdown">
-                                            <div class="dropbtn" data-toggle="dropdown">
-                                                {{ cavity.cavity_number }}
-                                            </div>
-                                        <div class="dropdown-content">
-                                        <a target="_blank" rel="noopener noreferrer" href="{% url 'networks' %}?search={{ cavity|build_name }}"> Query pocket in pocketome</a>
-                                        </div>
-                                        </span>
-                                        ::
-                                        {% if cavity.partner.ligand %}
-                                        <span class="dropdown">
-                                        <div class="dropbtn" data-toggle="dropdown" title="smiles: {{ cavity.partner.ligand.canonical_smile }}">
-                                            {{ cavity.partner.ligand.pdb_ligand_id }}_{{ cavity.partner.ligand.supplementary_id }}
-                                        </div>
-                                        <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?ligandcode={{ cavity.partner.ligand.pdb_ligand_id }}">Query ligand ID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?similar_to=ECFP4:{{ cavity.partner.ligand.canonical_smile|urlencode }}">Query SMILES in iPPI-DB compounds</a>
-                                        </div>
-                                        </span>
-                                        {% else %}
-                                        <span class="dropdown">
-                                        <div class="dropbtn" data-toggle="dropdown" title="uniprot: {{ cavity.partner.chain.protein.uniprot_id }}">
-                                            {{ cavity.partner.chain.pdb_chain_id }} | {{ cavity.partner.chain.protein.short_name }}
-                                        </div>
-                                        <div class="dropdown-content">
-                                        <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ cavity.partner.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
-                                        <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ cavity.partner.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
-                                        </div>
-                                        </span>
-                                        {% endif %}
-                                    </th>
-                                    <td>{% if cavity.partner.ligand %}PL{% else %}HD{% endif %}</td>
-                                    <td>{{ cavity.volume|floatformat:0 }}</td>
-                                    <td>{{ cavity.npr1|floatformat:2 }}</td>
-                                    <td>{{ cavity.npr2|floatformat:2 }}</td>
-                                    <td>{{ cavity.asphericity|floatformat:2 }}</td>
-                                    <td>{{ cavity.eccentricity|floatformat:2 }}</td>
-                                    <td>{{ cavity.rgyr|floatformat:2 }}</td>
-                                    <td>{{ cavity.spherocityindex|floatformat:2 }}</td>
-                                    <td>{{ cavity.ca|floatformat:1 }}</td>
-                                    <td>{{ cavity.cz|floatformat:1 }}</td>
-                                    <td>{{ cavity.n|floatformat:1 }}</td>
-                                    <td>{{ cavity.o|floatformat:1 }}</td>
-                                    <td>{{ cavity.og|floatformat:1 }}</td>
-                                    <td>{{ cavity.nz|floatformat:1 }}</td>
-                                    <td>{{ cavity.od1|floatformat:1 }}</td>
-                                    <td>{{ cavity.du|floatformat:1 }}</td>
-                                    <td>{{ cavity.t40|floatformat:1 }}</td>
-                                    <td>{{ cavity.t40_50|floatformat:1 }}</td>
-                                    <td>{{ cavity.t50_60|floatformat:1 }}</td>
-                                    <td>{{ cavity.t60_70|floatformat:1 }}</td>
-                                    <td>{{ cavity.t70_80|floatformat:1 }}</td>
-                                    <td>{{ cavity.t80_90|floatformat:1 }}</td>
-                                    <td>{{ cavity.t90_100|floatformat:1 }}</td>
-                                    <td>{{ cavity.t100_110|floatformat:1 }}</td>
-                                    <td>{{ cavity.t110_120|floatformat:1 }}</td>
-                                    <td>{{ cavity.t120|floatformat:1 }}</td>
+                                {% include "targetcentric_cavity_row.html" with chaincount=chaincount cavcount=cavcount %}
+                                <tr class="collapse out collapseme{{ chaincount }}_{{ cavcount }} asnyc-construction" data-cavity-id="{{cavity.id}}" data-cavcount="{{cavcount}}" data-chaincount="{{chaincount}}">
+                                    <td colspan="27"><span class="loader"></span></td>
                                 </tr>
-                                {% for distance in cavity.near_cavities %}
-                                {% if cavity == distance.cavity1 %}
-                                    <tr class="collapse out collapseme{{ chaincount }}_{{ cavcount }}" style="background-color:rgb({{ distance.distance|get_zscore:avg_std|get_color }})">
-                                        <th class="zui-sticky-col text-nowrap">
-                                        
-                                            <a title="{{ distance.distance|get_zscore:avg_std|floatformat:3|intcomma }}" target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?pdbsearch={{ distance.cavity2.chain.pdb.code }}">{{ distance.cavity2.chain.pdb.code }}</a>
-                                            / 
-                                            <span class="dropdown">
-                                            <div class="dropbtn" data-toggle="dropdown" title="uniprot: {{ distance.cavity2.chain.protein.uniprot_id }}">
-                                                {{ distance.cavity2.chain.pdb_chain_id }} | {{ distance.cavity2.chain.protein.short_name }}
-                                            </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ distance.cavity2.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ distance.cavity2.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
-                                            </div>
-                                            </span>
-                                            /  
-                                            <span class="dropdown">
-                                                <div class="dropbtn" data-toggle="dropdown">
-                                                    {{ distance.cavity2.cavity_number }}
-                                                </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'networks' %}?search={{ distance.cavity2|build_name }}"> Query pocket in pocketome</a>
-                                            </div>
-                                            </span>
-                                            ::
-                                        {% if distance.cavity2.partner.ligand %}
-                                            <span class="dropdown">
-                                            <div class="dropbtn" data-toggle="dropdown" title="smiles: {{ distance.cavity2.partner.ligand.canonical_smile }}">
-                                                {{ distance.cavity2.partner.ligand.pdb_ligand_id }}_{{ distance.cavity2.partner.ligand.supplementary_id }}
-                                            </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?ligandcode={{ distance.cavity2.partner.ligand.pdb_ligand_id }}">Query ligand ID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?similar_to=ECFP4:{{ distance.cavity2.partner.ligand.canonical_smile|urlencode }}">Query SMILES in iPPI-DB compounds</a>
-                                            </div>
-                                            </span>
-                                        {% else %}
-                                            <span class="dropdown">
-                                            <div class="dropbtn" data-toggle="dropdown" title="uniprot: {{ distance.cavity2.partner.chain.protein.uniprot_id }}">
-                                                {{ distance.cavity2.partner.chain.pdb_chain_id }} | {{ distance.cavity2.partner.chain.protein.short_name }}
-                                            </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ distance.cavity2.partner.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ distance.cavity2.partner.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
-                                            </div>
-                                            </span>
-                                        {% endif %}
-                                        </th>
-                                        <td>{% if distance.cavity2.partner.ligand %}PL{% else %}HD{% endif %}</td>
-                                        <td>{{ distance.cavity2.volume|floatformat:0 }}</td>
-                                        <td>{{ distance.cavity2.npr1|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity2.npr2|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity2.asphericity|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity2.eccentricity|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity2.rgyr|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity2.spherocityindex|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity2.ca|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.cz|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.n|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.o|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.og|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.nz|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.od1|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.du|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t40|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t40_50|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t50_60|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t60_70|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t70_80|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t80_90|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t90_100|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t100_110|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t110_120|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity2.t120|floatformat:1 }}</td>
-                                    </tr>
-                                {% elif cavity == distance.cavity2 %}
-                                    <tr class="collapse out collapseme{{ chaincount }}_{{ cavcount }}" style="background-color:rgb({{ distance.distance|get_zscore:avg_std|get_color }})">
-                                        <th class="zui-sticky-col text-nowrap">
-                                            <a title="{{ distance.distance|get_zscore:avg_std|floatformat:3|intcomma }}" target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?pdbsearch={{ distance.cavity1.chain.pdb.code }}">{{ distance.cavity1.chain.pdb.code }}</a>
-                                            / 
-                                            <span class="dropdown">
-                                            <div class="dropbtn" data-toggle="dropdown" title="uniprot:  {{ distance.cavity1.chain.protein.uniprot_id }}">
-                                                {{ distance.cavity1.chain.pdb_chain_id }} | {{ distance.cavity1.chain.protein.short_name }}
-                                            </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ distance.cavity1.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ distance.cavity1.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
-                                            </div>
-                                            </span>
-                                            / 
-                                            <span class="dropdown">
-                                                <div class="dropbtn" data-toggle="dropdown">
-                                                    {{ distance.cavity1.cavity_number }}
-                                                </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'networks' %}?search={{ distance.cavity1|build_name }}"> Query pocket in pocketome</a>
-                                            </div>
-                                            </span>
-                                            ::
-                                        {% if distance.cavity1.partner.ligand %}
-                                            <span class="dropdown">
-                                            <div class="dropbtn" data-toggle="dropdown" title="smiles: {{ distance.cavity1.partner.ligand.canonical_smile }}">
-                                                {{ distance.cavity1.partner.ligand.pdb_ligand_id }}_{{ distance.cavity1.partner.ligand.supplementary_id }}
-                                            </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?ligandcode={{ distance.cavity1.partner.ligand.pdb_ligand_id }}">Query ligand ID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?similar_to=ECFP4:{{ distance.cavity1.partner.ligand.canonical_smile|urlencode }}">Query SMILES in iPPI-DB compounds</a>
-                                            </div>
-                                            </span>
-                                        {% else %}
-                                            <span class="dropdown">
-                                            <div class="dropbtn" data-toggle="dropdown" title="uniprot: {{ distance.cavity1.partner.chain.protein.uniprot_id }}">
-                                                {{ distance.cavity1.partner.chain.pdb_chain_id }} | {{ distance.cavity1.partner.chain.protein.short_name }}
-                                            </div>
-                                            <div class="dropdown-content">
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ distance.cavity1.partner.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
-                                            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ distance.cavity1.partner.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
-                                            </div>
-                                            </span>
-                                        {% endif %}
-                                        </th>
-                                        <td>{% if distance.cavity1.partner.ligand %}PL{% else %}HD{% endif %}</td>
-                                        <td>{{ distance.cavity1.volume|floatformat:0 }}</td>
-                                        <td>{{ distance.cavity1.npr1|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity1.npr2|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity1.asphericity|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity1.eccentricity|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity1.rgyr|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity1.spherocityindex|floatformat:2 }}</td>
-                                        <td>{{ distance.cavity1.ca|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.cz|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.n|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.o|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.og|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.nz|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.od1|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.du|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t40|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t40_50|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t50_60|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t60_70|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t70_80|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t80_90|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t90_100|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t100_110|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t110_120|floatformat:1 }}</td>
-                                        <td>{{ distance.cavity1.t120|floatformat:1 }}</td>
-                                    </tr>
-                                {% endif %}
-                                {% endfor %}
+                                {% include "targetcentric_near_cavities.html" with object=cavityXXX %}
                                 {% endwith %}
                             {% endfor %}
                             {% endwith %}
diff --git a/ippisite/ippidb/templates/targetcentric_cavity_row.html b/ippisite/ippidb/templates/targetcentric_cavity_row.html
new file mode 100644
index 0000000000000000000000000000000000000000..3e2fa41c3d649a743f6bd576e014049e619f0416
--- /dev/null
+++ b/ippisite/ippidb/templates/targetcentric_cavity_row.html
@@ -0,0 +1,87 @@
+{% load customtags %}
+{% load humanize %}
+<tr XXXid="cavity_{{ cavity.id }}"
+    {%if near_cavity %}
+    class="collapse out collapseme{{ chaincount }}_{{ cavcount }}"
+    style="background-color:rgb({{ score|get_color }})"
+    {%else%}
+    class="table-light"
+    {%endif%}>
+    <th class="zui-sticky-col text-nowrap">
+        {%if not near_cavity %}
+        <i class="far fa-plus-square" style="cursor: pointer;" data-toggle="collapse" data-target=".collapseme{{ chaincount }}_{{ cavcount }}"
+           onclick="loadNearCavityRows($('.asnyc-construction[data-cavity-id={{ cavity.id }}]:not(loading)'));"></i>
+        {%endif%}
+        <a {%if score %} title="{{ score|floatformat:3|intcomma }}" {%endif%}
+           target="_blank"
+           rel="noopener noreferrer"
+           href="{% url 'cavities' %}?pdbsearch={{ cavity.chain.pdb.code }}">{{ cavity.chain.pdb.code }}</a>
+        /
+        <span class="dropdown">
+        <div class="dropbtn" data-toggle="dropdown" title="uniprot: {{ cavity.chain.protein.uniprot_id }}">
+            {{ cavity.chain.pdb_chain_id }} | {{ cavity.chain.protein.short_name }}
+        </div>
+        <div class="dropdown-content">
+            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ cavity.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
+            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ cavity.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
+        </div>
+        </span>
+        /
+        <span class="dropdown">
+            <div class="dropbtn" data-toggle="dropdown">
+                {{ cavity.cavity_number }}
+            </div>
+        <div class="dropdown-content">
+        <a target="_blank" rel="noopener noreferrer" href="{% url 'networks' %}?search={{ cavity|build_name }}"> Query pocket in pocketome</a>
+        </div>
+        </span>
+        ::
+        {% if cavity.partner.ligand %}
+        <span class="dropdown">
+        <div class="dropbtn" data-toggle="dropdown" title="smiles: {{ cavity.partner.ligand.canonical_smile }}">
+            {{ cavity.partner.ligand.pdb_ligand_id }}_{{ cavity.partner.ligand.supplementary_id }}
+        </div>
+        <div class="dropdown-content">
+            <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?ligandcode={{ cavity.partner.ligand.pdb_ligand_id }}">Query ligand ID in pockets</a>
+            <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?similar_to=ECFP4:{{ cavity.partner.ligand.canonical_smile|urlencode }}">Query SMILES in iPPI-DB compounds</a>
+        </div>
+        </span>
+        {% else %}
+        <span class="dropdown">
+        <div class="dropbtn" data-toggle="dropdown" title="uniprot: {{ cavity.partner.chain.protein.uniprot_id }}">
+            {{ cavity.partner.chain.pdb_chain_id }} | {{ cavity.partner.chain.protein.short_name }}
+        </div>
+        <div class="dropdown-content">
+        <a target="_blank" rel="noopener noreferrer" href="{% url 'cavities' %}?uniprotid={{ cavity.partner.chain.protein.uniprot_id }}">Query UniprotID in pockets</a>
+        <a target="_blank" rel="noopener noreferrer" href="{% url 'compound_list' %}?uniprot_id={{ cavity.partner.chain.protein.uniprot_id }}">Query UniprotID as iPPI-DB target</a>
+        </div>
+        </span>
+        {% endif %}
+    </th>
+    <td>{% if cavity.partner.ligand %}PL{% else %}HD{% endif %}</td>
+    <td>{{ cavity.volume|floatformat:0 }}</td>
+    <td>{{ cavity.npr1|floatformat:2 }}</td>
+    <td>{{ cavity.npr2|floatformat:2 }}</td>
+    <td>{{ cavity.asphericity|floatformat:2 }}</td>
+    <td>{{ cavity.eccentricity|floatformat:2 }}</td>
+    <td>{{ cavity.rgyr|floatformat:2 }}</td>
+    <td>{{ cavity.spherocityindex|floatformat:2 }}</td>
+    <td>{{ cavity.ca|floatformat:1 }}</td>
+    <td>{{ cavity.cz|floatformat:1 }}</td>
+    <td>{{ cavity.n|floatformat:1 }}</td>
+    <td>{{ cavity.o|floatformat:1 }}</td>
+    <td>{{ cavity.og|floatformat:1 }}</td>
+    <td>{{ cavity.nz|floatformat:1 }}</td>
+    <td>{{ cavity.od1|floatformat:1 }}</td>
+    <td>{{ cavity.du|floatformat:1 }}</td>
+    <td>{{ cavity.t40|floatformat:1 }}</td>
+    <td>{{ cavity.t40_50|floatformat:1 }}</td>
+    <td>{{ cavity.t50_60|floatformat:1 }}</td>
+    <td>{{ cavity.t60_70|floatformat:1 }}</td>
+    <td>{{ cavity.t70_80|floatformat:1 }}</td>
+    <td>{{ cavity.t80_90|floatformat:1 }}</td>
+    <td>{{ cavity.t90_100|floatformat:1 }}</td>
+    <td>{{ cavity.t100_110|floatformat:1 }}</td>
+    <td>{{ cavity.t110_120|floatformat:1 }}</td>
+    <td>{{ cavity.t120|floatformat:1 }}</td>
+</tr>
\ No newline at end of file
diff --git a/ippisite/ippidb/templates/targetcentric_near_cavities.html b/ippisite/ippidb/templates/targetcentric_near_cavities.html
new file mode 100644
index 0000000000000000000000000000000000000000..6d05ad86940d091cf5bc4f3984297c442c6ec48b
--- /dev/null
+++ b/ippisite/ippidb/templates/targetcentric_near_cavities.html
@@ -0,0 +1,10 @@
+{% load customtags %}
+{% for distance in object.near_cavities %}
+    {% with distance.distance|get_zscore:avg_std as score %}
+        {% if object == distance.cavity1 %}
+            {% include "targetcentric_cavity_row.html" with chaincount=chaincount cavcount=cavcount cavity=distance.cavity2 score=score near_cavity=True %}
+        {% elif object == distance.cavity2 %}
+            {% include "targetcentric_cavity_row.html" with chaincount=chaincount cavcount=cavcount cavity=distance.cavity1 score=score near_cavity=True %}
+        {% endif %}
+    {%endwith%}
+{% endfor %}
\ No newline at end of file
diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py
index 4a8ed986a0112a93872a9e25708ecfe78d985d13..e90f1b44d9d1019ad22fc51acbde1b8fc59dbd8f 100644
--- a/ippisite/ippidb/urls.py
+++ b/ippisite/ippidb/urls.py
@@ -74,6 +74,7 @@ urlpatterns = [
     ),
     re_path(r"^targetcentric/$", views.PDBView.as_view(), name="cavities"),
     re_path(r"^targetcentric/networks$", views.NetworkView.as_view(), name="networks"),
+    re_path(r"^cavity/(?P<pk>\d+)/near-cavities$", views.NearCavitiesHTMLFragmentView.as_view(), name="near_cavities"),
     re_path(r"^api/", include(ROUTER.urls)),
     re_path(r"^compounds/$", views.CompoundListView.as_view(), name="compound_list"),
     re_path(
diff --git a/ippisite/ippidb/views/__init__.py b/ippisite/ippidb/views/__init__.py
index db7c984fbfb8cdecfc28dab17d947d0d836405bc..f8a04759e403789621aee300e4eceb688aec9687 100644
--- a/ippisite/ippidb/views/__init__.py
+++ b/ippisite/ippidb/views/__init__.py
@@ -11,7 +11,7 @@ iPPI-DB views
 """
 from django.contrib.auth.decorators import login_required
 from django.shortcuts import render
-from .targetcentric import PdbViewSet, DistanceViewSet, PDBView, NetworkView
+from .targetcentric import PdbViewSet, DistanceViewSet, PDBView, NetworkView, NearCavitiesHTMLFragmentView
 from .contribute import ippidb_wizard_view, ContributionDetailView
 from .compound_query import (
     CompoundListView,
@@ -111,6 +111,7 @@ __all__ = [
     PDBView,
     get_output_job,
     NetworkView,
+    NearCavitiesHTMLFragmentView,
     get_json_network,
     IppiDbCompoundSitemap,
     IppiDbContributorsSitemap,
diff --git a/ippisite/ippidb/views/targetcentric.py b/ippisite/ippidb/views/targetcentric.py
index 40129fc88975506084d91dcfe9fcfb5436af3391..ecc7513df3ea566c4ad907cd8e6d6e82ecbd98d2 100644
--- a/ippisite/ippidb/views/targetcentric.py
+++ b/ippisite/ippidb/views/targetcentric.py
@@ -4,7 +4,7 @@ iPPI-DB targetcentric views and related classes
 from itertools import product
 from functools import reduce
 from operator import add
-from django.views.generic import ListView
+from django.views.generic import ListView, DetailView
 from django.contrib import messages
 from django.db.models import Case, When, Value, IntegerField, F, Q
 from rest_framework import viewsets
@@ -308,3 +308,16 @@ class NetworkView(ListView):
     def get_queryset(self):
         queryset = self.model.objects.all()
         return queryset.order_by("number")
+
+
+class NearCavitiesHTMLFragmentView(DetailView):
+    model = Cavity
+    template_name = "targetcentric_near_cavities.html"
+
+    def get_context_data(self, *, object_list=None, **kwargs):
+        return dict(
+            **super().get_context_data(**kwargs),
+            chaincount=self.request.GET.get('chaincount', '0'),
+            cavcount=self.request.GET.get('cavcount', '0'),
+            avg_std=MetaInformation.objects.first(),
+        )
diff --git a/ippisite/ippisite/db_finder.py b/ippisite/ippisite/db_finder.py
new file mode 100644
index 0000000000000000000000000000000000000000..36921dddca7886694f63a591c25cb4e0d7a9658a
--- /dev/null
+++ b/ippisite/ippisite/db_finder.py
@@ -0,0 +1,59 @@
+import os
+import subprocess
+
+
+def get_db_ip():
+    result = subprocess.run(
+        [
+            "docker",
+            "ps",
+            "-f",
+            "name=%s" % get_guessed_container_name(),
+            "-q",
+        ],
+        stdout=subprocess.PIPE,
+    )
+    ids = result.stdout.decode("utf-8").strip().split("\n")
+    if len(ids) > 1:
+        raise Exception("Can't find the DB, too much match")
+    if len(ids) == 0 or len(ids[0]) == 0:
+        result = subprocess.run(
+            [
+                "docker",
+                "ps",
+                "-f",
+                "name=_db",
+                "-q",
+            ],
+            stdout=subprocess.PIPE,
+        )
+        ids = result.stdout.decode("utf-8").strip().split("\n")
+        if len(ids) > 1:
+            raise Exception(
+                "Can't find the DB, couldn't guess container name (tried '%s'), "
+                "and too much match with '_db'" % get_guessed_container_name()
+            )
+        if len(ids) == 0 or len(ids[0]) == 0:
+            raise Exception("Can't find the DB")
+    result = subprocess.run(
+        [
+            "docker",
+            "inspect",
+            "-f",
+            "'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'",
+            ids[0],
+        ],
+        stdout=subprocess.PIPE,
+    )
+    return result.stdout.decode("utf-8").strip().replace("'", "")
+
+
+def get_guessed_container_name():
+    return (
+        str(os.path.dirname(__file__).split(os.path.sep)[-2]).lower().replace("-", "")
+        + "_db"
+    )
+
+
+if __name__ == "__main__":
+    print(get_db_ip())
diff --git a/ippisite/ippisite/settings.py b/ippisite/ippisite/settings.py
index 7d8911659fb21257e24d9e2f3557d95d8a5644e8..2649bc0029c4b6380ed3df10deb4255c4557448b 100644
--- a/ippisite/ippisite/settings.py
+++ b/ippisite/ippisite/settings.py
@@ -17,6 +17,8 @@ from decouple import config
 from django.utils.translation import gettext_lazy
 from socket import gethostname, gethostbyname
 
+from ippisite import db_finder
+
 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 PERSISTENT_DIR = os.path.join(BASE_DIR, 'persistent')
 
@@ -122,13 +124,16 @@ if config("USE_SQLITE_AS_DB", default="False").upper() == "TRUE":
         }
     }
 else:
+    POSTGRES_HOST = config("POSTGRES_HOST", '')
+    if not POSTGRES_HOST:
+        POSTGRES_HOST = db_finder.get_db_ip()
     DATABASES = {
         "default": {
             "ENGINE": "django.db.backends.postgresql",
             "NAME": config("POSTGRES_DB"),
             "USER": config("POSTGRES_USER"),
             "PASSWORD": config("POSTGRES_PASSWORD"),
-            "HOST": config("POSTGRES_HOST"),
+            "HOST": POSTGRES_HOST,
             "PORT": 5432,
         }
     }