diff --git a/userhandler/templates/modal/user_create.html b/userhandler/templates/modal/user_create.html
index 7967cc6..21afce0 100644
--- a/userhandler/templates/modal/user_create.html
+++ b/userhandler/templates/modal/user_create.html
@@ -6,7 +6,7 @@
                     <span aria-hidden="true">×</span></button>
                 <h4 class="modal-title">New User</h4>
             </div>
-            <form id="formCreateNS" action='{% url "users:create"   %}'
+            <form id="formCreateUser" action='{% url "users:create"   %}'
                   class="form-horizontal"
                   method="post" enctype="multipart/form-data">
                 {% csrf_token %}
diff --git a/userhandler/templates/modal/user_edit.html b/userhandler/templates/modal/user_edit.html
index b278e22..d3c3d38 100644
--- a/userhandler/templates/modal/user_edit.html
+++ b/userhandler/templates/modal/user_edit.html
@@ -4,32 +4,31 @@
             <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">New User</h4>
+                <h4 class="modal-title">Edit User</h4>
             </div>
-            <form id="formCreateNS" action='{% url "users:update"   %}'
+            <form id="formEditUser" action=""
                   class="form-horizontal"
                   method="post" enctype="multipart/form-data">
                 {% csrf_token %}
                 <div class="modal-body" id="modal_edit_user_body">
                     <div class="form-group">
-                        <label for="username" class="col-sm-3 control-label">Username *</label>
+                        <label for="username_edit" class="col-sm-3 control-label">Username *</label>
                         <div class="col-sm-6">
-                            <input class="form-control" id="username" name="username"
+                            <input class="form-control" id="username_edit" name="username"
                                    placeholder="Username" required>
                         </div>
                     </div>
-
                     <div class="form-group">
-                        <label for="password" class="col-sm-3 control-label">Password *</label>
+                        <label for=projects" class="col-sm-3 control-label">Default project *</label>
                         <div class="col-sm-6">
-                           <input class="form-control" id="password" name="password" type="password"
-                                   placeholder="Password" required>
+                            <select required id="default_project_edit" class="js-example-basic form-control" name="default_project">
+                            </select>
                         </div>
                     </div>
                     <div class="form-group">
                         <label for=projects" class="col-sm-3 control-label">Projects *</label>
                         <div class="col-sm-6">
-                            <select required id="projects" class="js-example-basic-multiple form-control" name="projects"
+                            <select required id="projects_edit" class="js-example-basic-multiple form-control" name="projects"
                             multiple="multiple">
                             </select>
                         </div>
diff --git a/userhandler/templates/user_list.html b/userhandler/templates/user_list.html
index 621df92..b83ec32 100644
--- a/userhandler/templates/user_list.html
+++ b/userhandler/templates/user_list.html
@@ -26,6 +26,8 @@
     {{ block.super }}
     {% include 'modal/user_details.html' %}
     {% include 'modal/user_create.html' %}
+    {% include 'modal/user_edit.html' %}
+
     {% csrf_token %}
     <div class="row">
         <div class="col-md-12">
@@ -35,10 +37,11 @@
                     <h3 class="box-title">Users</h3>
                     <div class="box-tools">
                         <button type="button" class="btn btn-default" data-container="body"
-                                onclick="javascript:openModalCreateUser({'projects_list_url': '{% url "projects:projects_list"  %}'})"
-                                        data-toggle="tooltip" data-placement="top" title="New User">
+                                onclick="javascript:openModalCreateUser({'projects_list_url': '{% url "projects:projects_list" %}'})"
+                                data-toggle="tooltip" data-placement="top" title="New User">
 
-                                    <i class="fa fa-plus"></i> Create User</button>
+                            <i class="fa fa-plus"></i> Create User
+                        </button>
 
                     </div>
                 </div>
@@ -50,13 +53,11 @@
                             <th>Projects</th>
                             <th>Identifier</th>
                             <th>Modified</th>
-                             <th>Created</th>
+                            <th>Created</th>
                             <th>Actions</th>
-
                         </tr>
                         </thead>
                         <tbody>
-
                         </tbody>
                     </table>
                 </div>
@@ -73,77 +74,111 @@
     <script src="/static/bower_components/select2/dist/js/select2.js"></script>
     <script src="/static/src/userhandler/user_list.js"></script>
     <script>
-    $(document).ready( function () {
-        var table = $('#users_table').DataTable({
-            responsive: true,
-            "ajax": {
-                "url": "/admin/users/list",
-                "dataSrc": function (json) {
-                    return json['users'];
-                },
-                statusCode: {
-                    401: function () {
-                        console.log("no auth");
-                        moveToLogin(window.location.pathname);
+        $(document).ready(function () {
+            var table = $('#users_table').DataTable({
+                responsive: true,
+                "ajax": {
+                    "url": "/admin/users/list",
+                    "dataSrc": function (json) {
+                        return json['users'];
+                    },
+                    statusCode: {
+                        401: function () {
+                            console.log("no auth");
+                            moveToLogin(window.location.pathname);
+                        }
+                    },
+                    "error": function (hxr, error, thrown) {
+                        console.log(hxr)
+                        console.log(thrown)
+                        console.log(error);
                     }
-                },
-                "error": function (hxr, error, thrown) {
-                    console.log(hxr)
-                    console.log(thrown)
-                    console.log(error);
-                }
 
-            },
-            "columns": [
-                {
-                    "render": function (data, type, row) {
-                        return row["username"];
-                    },
-                    "targets": 0
                 },
-                {
-                    "render": function (data, type, row) {
-                        return row['projects'];
+                "columns": [
+                    {
+                        "render": function (data, type, row) {
+                            return row["username"];
+                        },
+                        "targets": 0
                     },
-                    "targets": 1
-                },
-                {
-                    "render": function (data, type, row) {
-                        return row['_id'];
+                    {
+                        "render": function (data, type, row) {
+                            return row['projects'];
+                        },
+                        "targets": 1
                     },
-                    "targets": 2
-                },
-                {
-                    "render": function (data, type, row) {
-                        return moment.unix(row["_admin"]['modified']).format('YYYY-MM-DD hh:mm:ss a');
+                    {
+                        "render": function (data, type, row) {
+                            return row['_id'];
+                        },
+                        "targets": 2
                     },
-                    "targets": 3
-                },
-                {
-                    "render": function (data, type, row) {
-                        return moment.unix(row["_admin"]['created']).format('YYYY-MM-DD hh:mm:ss a');;
+                    {
+                        "render": function (data, type, row) {
+                            return moment.unix(row["_admin"]['modified']).format('YYYY-MM-DD hh:mm:ss a');
+                        },
+                        "targets": 3
                     },
-                    "targets": 4
-                },
-                {
-                    "render": function (data, type, row) {
-                        return '<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:deleteUser(\'' + row['_id'] + '\', \''+row['username']+'\')"' +
-                        'style="color:red"><i class="fa fa-trash"></i> Delete</a></li> </ul></div>';
+                    {
+                        "render": function (data, type, row) {
+                            return moment.unix(row["_admin"]['created']).format('YYYY-MM-DD hh:mm:ss a');
+                        },
+                        "targets": 4
                     },
-                    "targets": 5
-                }
-            ]
-        });
+                    {
+                        "render": function (data, type, row) {
+                            return '<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:openModalEditUser({user_id:\'' + row['_id'] + '\', usernarme:\'' + row['username'] + '\', projects: \'' + row['projects'] + '\'})">' +
+                                //'<i class="fa fa-edit"></i> Edit</a></li>' +
+                                '<li> <a href="#" onclick="javascript:deleteUser(\'' + row['_id'] + '\', \'' + row['username'] + '\')"' +
+                                'style="color:red"><i class="fa fa-trash"></i> Delete</a></li> </ul></div>';
+                        },
+                        "targets": 5
+                    }
+                ]
+            });
 
-        setInterval(function () {
+            setInterval(function () {
                 table.ajax.reload();
             }, 10000);
-    });
+
+            $("#formEditUser").submit(function (event) {
+                event.preventDefault(); //prevent default action
+                var post_url = $(this).attr("action"); //get form action url
+                var request_method = $(this).attr("method"); //get form GET/POST method
+                var form_data = new FormData(this); //Encode form elements for submission
+                console.log(post_url);
+                $.ajax({
+                    url: post_url,
+                    type: request_method,
+                    data: form_data,
+                    headers: {
+                        "Accept": 'application/json'
+                    },
+                    contentType: false,
+                    processData: false
+                }).done(function (response, textStatus, jqXHR) {
+                    $('#modal_edit_user').modal('hide');
+                    bootbox.alert({
+                        title: "Result",
+                        message: "User edited successfully."
+                    });
+                }).fail(function (result) {
+                    var data = result.responseJSON;
+                    var title = "Error " + (data.code ? data.code : 'unknown');
+                    var message = data.detail ? data.detail : 'No detail available.';
+                    bootbox.alert({
+                        title: title,
+                        message: message
+                    });
+                });
+            });
+        });
     </script>
 
 
diff --git a/userhandler/urls.py b/userhandler/urls.py
index 05d88f0..9b07f43 100644
--- a/userhandler/urls.py
+++ b/userhandler/urls.py
@@ -20,6 +20,7 @@
 urlpatterns = [
     url(r'^list$', views.list, name='list'),
     url(r'^create$', views.create, name='create'),
-    url(r'^(?P<user_id>[0-9a-zA-Z]+)/delete$', views.delete, name='delete'),
+    url(r'^(?P<user_id>[0-9a-zA-Z]+)', views.update, name='update'),
+    url(r'^(?P<user_id>[0-9a-zA-Z]+)/delete$', views.delete, name='delete')
 
 ]
\ No newline at end of file
diff --git a/userhandler/views.py b/userhandler/views.py
index aa0d8d2..05d5925 100644
--- a/userhandler/views.py
+++ b/userhandler/views.py
@@ -46,6 +46,22 @@
         log.exception(e)
     return __response_handler(request, {}, 'users:list', to_redirect=True, )
 
+@login_required
+def update(request, user_id=None):
+    user = osmutils.get_user(request)
+    try:
+        client = Client()
+        user_data = {
+            "projects": request.POST.getlist('projects')
+        }
+        print user_data
+        update_res = client.user_update(user.get_token(), user_id, user_data)
+    except Exception as e:
+        log.exception(e)
+    return __response_handler(request, {}, 'users:list', to_redirect=True, )
+
+
+
 
 def __response_handler(request, data_res, url=None, to_redirect=None, *args, **kwargs):
     raw_content_types = request.META.get('HTTP_ACCEPT', '*/*').split(',')
