diff --git a/projecthandler/template/project/modal/project_edit.html b/projecthandler/template/project/modal/project_edit.html
new file mode 100644
index 0000000..27a9ee6
--- /dev/null
+++ b/projecthandler/template/project/modal/project_edit.html
@@ -0,0 +1,32 @@
+<div class="modal" id="modal_edit_project" xmlns="http://www.w3.org/1999/html">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">×</span></button>
+                <h4 class="modal-title" id="modal_edit_project_title">Edit Project</h4>
+            </div>
+            <form id="formEditProject" class="form-horizontal" method="post" >
+                     {% csrf_token %}
+            <div class="modal-body">
+
+                <div id="div_chose_id">
+                    <label>Project Name: </label>
+                    <input name="name" id="name"  size="40" maxlength="20"/>
+                </div>
+
+            </div>
+
+            <div class="modal-footer">
+                <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
+                <button class="btn btn-primary"
+                            data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> Editing..."
+                            id="create_edit_project">Apply
+                    </button>
+            </div>
+                </form>
+        </div>
+        <!-- /.modal-content -->
+    </div>
+    <!-- /.modal-dialog -->
+</div>
\ No newline at end of file
diff --git a/projecthandler/template/project/modal/new_project.html b/projecthandler/template/project/modal/project_new.html
similarity index 100%
rename from projecthandler/template/project/modal/new_project.html
rename to projecthandler/template/project/modal/project_new.html
diff --git a/projecthandler/template/project/projectlist.html b/projecthandler/template/project/projectlist.html
index 85abb59..ed8b583 100644
--- a/projecthandler/template/project/projectlist.html
+++ b/projecthandler/template/project/projectlist.html
@@ -47,9 +47,7 @@
 
 						<th>Modification Date</th>
 						<th>Creation Date</th>
-
-
-						<th><i class="far fa-trash-alt"></i></th>
+						<th>Actions</th>
 					</tr>
 				</thead>
 				<tbody>
@@ -63,8 +61,22 @@
 						<td>{{ p|get_sub:"_admin,modified"|get_date}}</td>
                         <td>{{ p|get_sub:"_admin,created"|get_date}}</td>
 
-						<td><a href="javascript:deleteProject('{% url 'projects:delete_project' %}')"> Delete</a></td>
-
+                        <td>
+                            <div class="btn-group">
+                            <button type="button" class="btn btn-default dropdown-toggle"
+                                    data-toggle="dropdown" aria-expanded="false">Actions
+                                <span class="fa fa-caret-down"></span></button>
+                            <ul class="dropdown-menu">
+                                <li><a href="#"
+                                       onclick="javascript:editProject('{% url 'projects:edit_project'  project_id=p.name %}')">
+                                    <i class="fa fa-edit"></i> Rename</a></li>
+                                <li>
+                                    <a href="#" onclick="javascript:deleteProject('{% url 'projects:delete_project'  project_id=p.name%}')" style="color:red">
+                                        <i class="fa fa-trash"  ></i> Delete</a>
+                                </li>
+                            </ul>
+                            </div>
+                        </td>
 					</tr>
 				{% endfor %}
 				</tbody>
@@ -74,7 +86,8 @@
 </div>
 
 </div>
-{% include "modal/new_project.html" %}
+{% include "modal/project_new.html" %}
+{% include "modal/project_edit.html" %}
 {% endblock %}
 
 {% block resource_block %}
@@ -84,6 +97,11 @@
         $('#modal_new_project').modal('show');
     }
 
+    function editProject(url){
+        $("#formEditProject").attr("action", url);
+        $('#modal_edit_project').modal('show');
+    }
+
     function deleteProject(url) {
     bootbox.confirm("Are you sure want to delete?", function (result) {
         if (result) {
diff --git a/projecthandler/urls/project.py b/projecthandler/urls/project.py
index e0395c8..9d653b6 100644
--- a/projecthandler/urls/project.py
+++ b/projecthandler/urls/project.py
@@ -21,8 +21,9 @@
     url(r'^$', views.open_project, name='open_project'),
     url(r'^list/', views.user_projects, name='projects_list'),
     url(r'^new/', views.create_new_project, name='new_project'),
-    url(r'^delete$', views.delete_project, name='delete_project'),
-    url(r'^switch/(?P<project_id>\w+)', views.switch_project, name='switch_project'),
+    url(r'^(?P<project_id>\w+)/delete$', views.delete_project, name='delete_project'),
+    url(r'^(?P<project_id>\w+)/switch', views.switch_project, name='switch_project'),
+    url(r'^(?P<project_id>\w+)/edit', views.edit_project, name='edit_project'),
     url(r'^descriptors/(?P<descriptor_type>\w+)/list$', views.show_descriptors, name='list_descriptors'),
     url(r'^descriptors/(?P<descriptor_type>\w+)/(?P<descriptor_id>[-\w]+)(/$)',
         views.edit_descriptor, name='edit_descriptor'),
diff --git a/projecthandler/views.py b/projecthandler/views.py
index 0f0cf6c..0f4248a 100644
--- a/projecthandler/views.py
+++ b/projecthandler/views.py
@@ -281,9 +281,9 @@
 
 
 @login_required
-def delete_project(request):
+def delete_project(request, project_id):
     user = osmutils.get_user(request)
-    project_id = user.project_id
+
     client = Client()
     result = client.project_delete(user.get_token(), project_id)
     if isinstance(result, dict) and 'error' in result and result['error']:
@@ -302,6 +302,23 @@
 
 
 @login_required
+def edit_project(request, project_id):
+    if request.method == 'POST':
+        user = osmutils.get_user(request)
+        client = Client()
+        project_dict = request.POST.dict()
+        keys = ["name"]
+        project_data = dict(filter(lambda i: i[0] in keys and len(i[1]) > 0, project_dict.items()))
+        result = client.project_edit(user.get_token(), project_id, project_data)
+        if isinstance(result, dict) and 'error' in result and result['error']:
+            print result
+            return __response_handler(request, result['data'], url=None,
+                                      status=result['data']['status'] if 'status' in result['data'] else 500)
+        else:
+            return __response_handler(request, {}, url=None, status=200)
+
+
+@login_required
 def show_descriptors(request, descriptor_type=None):
     user = osmutils.get_user(request)
     project_id = user.project_id
