diff --git a/circle/dashboard/templates/dashboard/_disk-list-element.html b/circle/dashboard/templates/dashboard/_disk-list-element.html
new file mode 100644
index 0000000..de5b0e2
--- /dev/null
+++ b/circle/dashboard/templates/dashboard/_disk-list-element.html
@@ -0,0 +1,14 @@
+{% load i18n %}
+{% load sizefieldtags %}
+
+<i class="{% if d.is_downloading %}icon-refresh icon-spin{% else %}icon-file{% endif %}"></i> 
+{{ d.name }} (#{{ d.id }}) - 
+{% if not d.is_downloading %}
+  {% if d.ready %}
+    {{ d.size|filesize }}
+  {% else %}
+    <div class="label label-danger">failed</div>
+  {% endif %}
+{% else %}<span class="disk-list-disk-percentage" data-disk-pk="{{ d.pk }}">{{ d.get_download_percentage }}</span>%{% endif %}
+
+<div class="btn btn-xs btn-danger pull-right"><i class="icon-remove"></i> Remove</div>
diff --git a/circle/dashboard/templates/dashboard/template-edit.html b/circle/dashboard/templates/dashboard/template-edit.html
index 3bf75bc..b595d3a 100644
--- a/circle/dashboard/templates/dashboard/template-edit.html
+++ b/circle/dashboard/templates/dashboard/template-edit.html
@@ -1,5 +1,6 @@
 {% extends "dashboard/base.html" %}
 {% load i18n %}
+{% load sizefieldtags %}
 {% load crispy_forms_tags %} 
 {% block content %}
 
@@ -22,7 +23,7 @@
   <div class="col-md-4">
     <div class="panel panel-default">
       <div class="panel-heading">
-        <h3 class="no-margin"><i class="icon-group"></i> {% trans "Manage access"  %}</h3>
+        <h4 class="no-margin"><i class="icon-group"></i> {% trans "Manage access"  %}</h4>
       </div>
       <div class="panel-body">
         <form action="{% url "dashboard.views.template-acl" pk=object.pk %}" method="post">{% csrf_token %}
@@ -65,9 +66,25 @@
       </div>
     </div>
     
+        
     <div class="panel panel-default">
       <div class="panel-heading">
-        <h3 class="no-margin"><i class="icon-file"></i> {% trans "Create new disk" %}</h3>
+        <h4 class="no-margin"><i class="icon-file"></i> {% trans "Disk list" %}</h4>
+      </div>
+      <div class="panel-body">
+        <ul style="list-style: none; padding-left: 0;">
+        {% for d in disks %}
+          <li>
+            {% include "dashboard/_disk-list-element.html" %}
+          </li>
+        {% endfor %}
+        </ul>
+      </div>
+    </div>
+        
+    <div class="panel panel-default">
+      <div class="panel-heading">
+        <h4 class="no-margin"><i class="icon-folder-open"></i> {% trans "Create new disk" %}</h4>
       </div>
       <div class="panel-body">
         <form action="{% url "dashboard.views.disk-add" %}" method="POST">
diff --git a/circle/dashboard/templates/dashboard/vm-detail/resources.html b/circle/dashboard/templates/dashboard/vm-detail/resources.html
index d6c7c0c..c564fb9 100644
--- a/circle/dashboard/templates/dashboard/vm-detail/resources.html
+++ b/circle/dashboard/templates/dashboard/vm-detail/resources.html
@@ -60,7 +60,7 @@
     {% endif %}
     {% for d in instance.disks.all %}
       <h4 class="list-group-item-heading dashboard-vm-details-network-h3">
-        <i class="icon-file"></i> {{ d.name }} (#{{ d.id }}) - {{ d.size|filesize }}
+        {% include "dashboard/_disk-list-element.html" %}
       </h4>
     {% endfor %}
   </div>
diff --git a/circle/storage/models.py b/circle/storage/models.py
index 4210ff5..3ac8b49 100644
--- a/circle/storage/models.py
+++ b/circle/storage/models.py
@@ -16,6 +16,7 @@ from datetime import timedelta
 from acl.models import AclBase
 from .tasks import local_tasks, remote_tasks
 from celery.exceptions import TimeoutError
+from manager.mancelery import celery
 from common.models import ActivityModel, activitycontextimpl, WorkerNotFound
 
 logger = logging.getLogger(__name__)
@@ -133,6 +134,19 @@ class Disk(AclBase, TimeStampedModel):
             'raw-rw': 'vd',
         }[self.type]
 
+    def is_downloading(self):
+        da = DiskActivity.objects.filter(disk=self).latest("created")
+        return (da.activity_code == "storage.Disk.download"
+                and da.succeeded is None)
+
+    def get_download_percentage(self):
+        if not self.is_downloading():
+            return None
+
+        task = DiskActivity.objects.latest("created").task_uuid
+        result = celery.AsyncResult(id=task)
+        return result.info.get("percent")
+
     def is_deletable(self):
         """Returns whether the file can be deleted.