diff --git a/backend/secfit/users/forms.py b/backend/secfit/users/forms.py
index c2e25067d080d79e4fa9dc84439b5e87217b47ca..56db4f55152336580d53da75e59e63f78da77e0c 100644
--- a/backend/secfit/users/forms.py
+++ b/backend/secfit/users/forms.py
@@ -9,11 +9,14 @@ class CustomUserCreationForm(UserCreationForm):
     country = forms.CharField(max_length=50)
     city = forms.CharField(max_length=50)
     street_address = forms.CharField(max_length=50)
+    favorite_exercise = forms.CharField(max_length=50)
+    gym = forms.CharField(max_length=50)
+    
 
 
     class Meta(UserCreationForm):
         model = get_user_model()
-        fields = ("username", "coach", "phone_number", "country", "city", "street_address")
+        fields = ("username", "coach", "phone_number", "country", "city", "street_address","favorite_exercise","gym")
 
 
 class CustomUserChangeForm(UserChangeForm):
diff --git a/backend/secfit/users/models.py b/backend/secfit/users/models.py
index 08c14e2ba0899684d8be06d1a7e14b51686e035c..af6eabc1f0def0aa3d43d398c3ad7baeb0402743 100644
--- a/backend/secfit/users/models.py
+++ b/backend/secfit/users/models.py
@@ -18,7 +18,8 @@ class User(AbstractUser):
     country = models.TextField(max_length=50, blank=True)
     city = models.TextField(max_length=50, blank=True)
     street_address = models.TextField(max_length=50, blank=True)
-    goal = models.TextField(max_length=200, blank=True)
+    favorite_exercise = models.TextField(max_length=50, blank=True)
+    gym = models.TextField(max_length=50, blank=True)
     
 
 def athlete_directory_path(instance, filename):
diff --git a/backend/secfit/users/urls.py b/backend/secfit/users/urls.py
index 507c27008e8b0997e486945a27bfe3afc55d89de..928013341b800bca5809c25d75456e73d5196bd2 100644
--- a/backend/secfit/users/urls.py
+++ b/backend/secfit/users/urls.py
@@ -6,6 +6,8 @@ urlpatterns = [
     path("api/users/", views.UserList.as_view(), name="user-list"),
     path("api/users/<int:pk>/", views.UserDetail.as_view(), name="user-detail"),
     path("api/users/<str:username>/", views.UserDetail.as_view(), name="user-detail"),
+    path("api/users/<str:favorite_exercise>/", views.UserDetail.as_view(), name="user-detail"),
+    path("api/users/<str:gym>/", views.UserDetail.as_view(), name="user-detail"),
     path("api/offers/", views.OfferList.as_view(), name="offer-list"),
     path("api/offers/<int:pk>/", views.OfferDetail.as_view(), name="offer-detail"),
     path(
diff --git a/frontend/www/profile.html b/frontend/www/profile.html
index f5eef61ff0510de744177a25604df1cf15a09e13..0ab05c83ab61a462362bbb5ee9035c18a2b39192 100644
--- a/frontend/www/profile.html
+++ b/frontend/www/profile.html
@@ -1,67 +1,47 @@
 <!DOCTYPE html>
 <html lang="en">
 <head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <title>Profile</title>
-  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Exercises</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
 
-  <script src="https://kit.fontawesome.com/0ce6c392ca.js" crossorigin="anonymous"></script>
-  <link rel="stylesheet" href="styles/style.css">
-  <script src="scripts/navbar.js" type="text/javascript" defer></script>
+    <script src="https://kit.fontawesome.com/0ce6c392ca.js" crossorigin="anonymous"></script>
+    <link rel="stylesheet" href="styles/style.css">
+    <script src="scripts/navbar.js" type="text/javascript" defer></script>
 </head>
 <body>
-<navbar-el></navbar-el>
+    <navbar-el></navbar-el>
 
-<div class="container">
-  <div class="row">
-    <div class="col-lg">
-      <h3 class="mt-3">Profile settings</h3>
+    <div class="container">
+        <div class="row">
+            <div class="col-lg text-center">
+                <h3 class="mt-5">This is your profile</h3>
+                <p>Here you can view, create, and edit exercise types defined by you and other athletes.</p>
+                <input type="button" class="btn btn-primary" id="btn-edit-profile" value="Edit profile">
+        </div>
+        <div class="row">
+            <div class="col-lg text-center">
+                <div class="list-group mt-1" id="div-content"></div>
+            </div>
+        </div>
     </div>
-  </div>
-  <form class="row g-3" id="form-exercise">
-    <div class="col-lg-6 ">
-      <label for="inputName" class="form-label">Name</label>
-      <input type="text" class="form-control" id="inputName" name="name" readonly>
-    </div>
-    <div class="col-lg-6"></div>
-    <div class="col-lg-6">
-    </div>
-    <div class="col-lg-6"></div>
-    <div class="col-lg-6 ">
-      <label for="inputName" class="form-label">Favourite Exercise</label>
-      <input type="text" class="form-control" id="inputFavouriteExercise" name="favouriteExercise" readonly>
-    </div>
-
-    <div class="col-lg-6"></div>
-    <div class="col-lg-6">
 
-    </div>
-    <div class="col-lg-6"></div>
-    <div class="col-lg-6">
-      <label for="inputMuscles" class="form-label">Main gym</label>
-      <select class="form-select" name="gymGroup" disabled="true">
-        <option value="Legs">SIT</option>
-        <option value="Chest">IMPULS</option>
-        <option value="Back">3T</option>
-        <option value="Arms">STAMINA</option>
-      </select>
-    </div>
-    <div class="col-lg-6"></div>
-    <div class="col-lg-6">
-      <input type="button" class="btn btn-primary hide" id="btn-ok-exercise" value="  OK  ">
-      <input type="button" class="btn btn-primary" id="btn-edit-exercise" value=" Edit ">
-      <input type="button" class="btn btn-secondary hide" id="btn-cancel-exercise" value="Cancel">
-      <input type="button" class="btn btn-danger float-end hide" id="btn-delete-exercise" value="Delete">
-    </div>
-    <div class="col-lg-6">
+    <template id="template-exercise">
+        <a class="list-group-item list-group-item-action flex-column align-items-start my-1 exercise" href="">
+            <div class="d-flex w-100 justify-content-between align-items-center">
+                <h5 class="mb-1"></h5>
+            </div>
+            <div class="d-flex">
+                <p class="mb-1">
+                </p>
+            </div>
+        </a>
+    </template>
 
-    </div>
-  </form>
-</div>
-<script src="scripts/defaults.js"></script>
-<script src="scripts/scripts.js"></script>
-<script src="scripts/profile.js"></script>
-<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
+    <script src="scripts/defaults.js"></script>
+    <script src="scripts/scripts.js"></script>
+    <script src="scripts/profile.js"></script>
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
 </body>
-</html>
+</html>
\ No newline at end of file
diff --git a/frontend/www/profilesettings.html b/frontend/www/profilesettings.html
new file mode 100644
index 0000000000000000000000000000000000000000..1a390499703dd24bf9740d94cf9d9ba39259abcd
--- /dev/null
+++ b/frontend/www/profilesettings.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Profile</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
+
+  <script src="https://kit.fontawesome.com/0ce6c392ca.js" crossorigin="anonymous"></script>
+  <link rel="stylesheet" href="styles/style.css">
+  <script src="scripts/navbar.js" type="text/javascript" defer></script>
+</head>
+<body>
+<navbar-el></navbar-el>
+
+<div class="container">
+  <div class="row">
+    <div class="col-lg">
+      <h3 class="mt-3">Profile settings</h3>
+    </div>
+  </div>
+  <form class="row g-3" id="form-exercise">
+    <div class="col-lg-6 ">
+      <label for="inputName" class="form-label">Name</label>
+      <input type="text" class="form-control" id="inputName" name="name" readonly>
+    </div>
+    <div class="col-lg-6"></div>
+    <div class="col-lg-6">
+    </div>
+    <div class="col-lg-6"></div>
+    <div class="col-lg-6 ">
+      <label for="inputName" class="form-label">Favourite Exercise</label>
+      <input type="text" class="form-control" id="inputFavouriteExercise" name="favouriteExercise" readonly>
+    </div>
+
+    <div class="col-lg-6"></div>
+    <div class="col-lg-6">
+
+    </div>
+    <div class="col-lg-6"></div>
+    <div class="col-lg-6">
+      <label for="inputMuscles" class="form-label">Main gym</label>
+      <select class="form-select" name="gymGroup" disabled="true">
+        <option value="Legs">SIT</option>
+        <option value="Chest">IMPULS</option>
+        <option value="Back">3T</option>
+        <option value="Arms">STAMINA</option>
+      </select>
+    </div>
+    <div class="col-lg-6"></div>
+    <div class="col-lg-6">
+      <input type="button" class="btn btn-primary hide" id="btn-ok-exercise" value="  OK  ">
+      <input type="button" class="btn btn-primary" id="btn-edit-exercise" value=" Edit ">
+      <input type="button" class="btn btn-secondary hide" id="btn-cancel-exercise" value="Cancel">
+      <input type="button" class="btn btn-danger float-end hide" id="btn-delete-exercise" value="Delete">
+    </div>
+    <div class="col-lg-6">
+
+    </div>
+  </form>
+</div>
+<script src="scripts/defaults.js"></script>
+<script src="scripts/scripts.js"></script>
+<script src="scripts/profilesettings.js"></script>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
+</body>
+</html>
diff --git a/frontend/www/scripts/profile.js b/frontend/www/scripts/profile.js
index ceba324d72bcbb9a12d3c29ff3764356077ca14d..e0ca6d14b7d6463d179142b6ad19690539625d1b 100644
--- a/frontend/www/scripts/profile.js
+++ b/frontend/www/scripts/profile.js
@@ -1,211 +1,42 @@
-let cancelButton;
-let okButton;
-let deleteButton;
-let editButton;
-let oldFormData;
-
-class MuscleGroup {
-    constructor(type) {
-        this.isValidType = false;
-        this.validTypes = ["SIT", "IMPULS", "3T", "STAMINA"];
-
-        this.type = this.validTypes.includes(type) ? type : undefined;
-    };
-
-    setMuscleGroupType = (newType) => {
-        this.isValidType = false;
-
-        if(this.validTypes.includes(newType)){
-            this.isValidType = true;
-            this.type = newType;
-        }
-        else{
-            alert("Invalid muscle group!");
-        }
-
-    };
-
-    getMuscleGroupType = () => {
-        console.log(this.type, "SWIOEFIWEUFH")
-        return this.type;
-    }
-}
-
-function handleCancelButtonDuringEdit() {
-    console.log("fjpfjhpisdfhøidksfho")
-    /*
-    setReadOnly(true, "#form-exercise");
-    document.querySelector("select").setAttribute("disabled", "")
-    okButton.className += " hide";
-    deleteButton.className += " hide";
-    cancelButton.className += " hide";
-    editButton.className = editButton.className.replace(" hide", "");
-
-    cancelButton.removeEventListener("click", handleCancelButtonDuringEdit);
-
-    let form = document.querySelector("#form-exercise");
-    if (oldFormData.has("name")) form.name.value = oldFormData.get("name");
-    if (oldFormData.has("favouriteExercise")) form.name.value = oldFormData.get("favouriteExercise");
-    if (oldFormData.has("gymGroup")) form.muscleGroup.value = oldFormData.get("gymGroup");
-
-    oldFormData.delete("name");
-    oldFormData.delete("favouriteExercise");
-    oldFormData.delete("gymGroup");
-     */
-
-}
-
-function handleCancelButtonDuringCreate() {
-    window.location.replace("profile.html");
-}
-
-async function createExercise() {
-    document.querySelector("select").removeAttribute("disabled")
-    console.log("dasdadasda")
-    let form = document.querySelector("#form-exercise");
-    let formData = new FormData(form);
-    let body = {"name": formData.get("name"),
-        "description": formData.get("description"),
-        "duration": formData.get("duration"),
-        "calories": formData.get("calories"),
-        "muscleGroup": formData.get("muscleGroup"),
-        "unit": formData.get("unit")};
-
-    let response = await sendRequest("POST", `${HOST}/api/exercises/`, body);
+async function fetchProfileData(request) {
+    let response = await sendRequest("GET", `${HOST}/api/users/`);
 
     if (response.ok) {
-        window.location.replace("exercises.html");
-    } else {
         let data = await response.json();
-        let alert = createAlert("Coulds not create new exercise!", data);
-        document.body.prepend(alert);
-    }
 
-    console.log("TEST*IJG")
-}
-
-function handleEditExerciseButtonClick() {
-    setReadOnly(false, "#form-exercise");
-
-    document.querySelector("select").removeAttribute("disabled")
+        let users = data.results;
+        let container = document.getElementById('div-content');
+        let exerciseTemplate = document.querySelector("#users");
+        users.forEach(user => {
+            const exerciseAnchor = exerciseTemplate.content.firstElementChild.cloneNode(true);
+            exerciseAnchor.href = `exercise.html?id=${user.id}`;
 
-    editButton.className += " hide";
-    okButton.className = okButton.className.replace(" hide", "");
-    cancelButton.className = cancelButton.className.replace(" hide", "");
-    deleteButton.className = deleteButton.className.replace(" hide", "");
+            const h5 = exerciseAnchor.querySelector("h5");
+            h5.textContent = exercise.name;
 
-    cancelButton.addEventListener("click", handleCancelButtonDuringEdit);
+            const p = exerciseAnchor.querySelector("p");
+            p.textContent = exercise.description;   
 
-    let form = document.querySelector("#form-exercise");
-    oldFormData = new FormData(form);
-}
-
-async function deleteExercise(id) {
-    let response = await sendRequest("DELETE", `${HOST}/api/exercises/${id}/`);
-    if (!response.ok) {
-        let data = await response.json();
-        let alert = createAlert(`Could not delete exercise ${id}`, data);
-        document.body.prepend(alert);
-    } else {
-        window.location.replace("exercises.html");
+            container.appendChild(exerciseAnchor);
+        });
     }
-}
-
-async function retrieveExercise(id) {
-    let response = await sendRequest("GET", `${HOST}/api/exercises/${id}/`);
 
-    console.log(response.ok)
-
-    if (!response.ok) {
-        let data = await response.json();
-        let alert = createAlert("Could not retrieve exercise data!", data);
-        document.body.prepend(alert);
-    } else {
-        document.querySelector("select").removeAttribute("disabled")
-        let exerciseData = await response.json();
-        let form = document.querySelector("#form-exercise");
-        let formData = new FormData(form);
-
-        for (let key of formData.keys()) {
-            let selector
-            key !== "muscleGroup" ? selector = `input[name="${key}"], textarea[name="${key}"]` : selector = `select[name=${key}]`
-            let input = form.querySelector(selector);
-            let newVal = exerciseData[key];
-            input.value = newVal;
-        }
-        document.querySelector("select").setAttribute("disabled", "")
-    }
+    return response;
 }
 
-async function updateExercise(id) {
-    let form = document.querySelector("#form-exercise");
-    let formData = new FormData(form);
-
-    let muscleGroupSelector = document.querySelector("select")
-    muscleGroupSelector.removeAttribute("disabled")
-
-    let selectedMuscleGroup = new MuscleGroup(formData.get("muscleGroup"));
+function editProfile() {
+    window.location.replace("profilesettings.html");
+}
 
-    let body = {"name": formData.get("name"),
-        "description": formData.get("description"),
-        "duration": formData.get("duration"),
-        "calories": formData.get("calories"),
-        "muscleGroup": selectedMuscleGroup.getMuscleGroupType(),
-        "unit": formData.get("unit")};
-    let response = await sendRequest("PUT", `${HOST}/api/exercises/${id}/`, body);
+window.addEventListener("DOMContentLoaded", async () => {
+    let createButton = document.querySelector("#btn-edit-profile");
+    createButton.addEventListener("click", editProfile);
 
+    let response = await fetchProfileData();
+    
     if (!response.ok) {
         let data = await response.json();
-        let alert = createAlert(`Could not update exercise ${id}`, data);
+        let alert = createAlert("Could not retrieve profile!", data);
         document.body.prepend(alert);
-    } else {
-        muscleGroupSelector.setAttribute("disabled", "")
-        // duplicate code from handleCancelButtonDuringEdit
-        // you should refactor this
-        setReadOnly(true, "#form-exercise");
-        okButton.className += " hide";
-        deleteButton.className += " hide";
-        cancelButton.className += " hide";
-        editButton.className = editButton.className.replace(" hide", "");
-
-        cancelButton.removeEventListener("click", handleCancelButtonDuringEdit);
-
-        oldFormData.delete("name");
-        oldFormData.delete("description");
-        oldFormData.delete("duration");
-        oldFormData.delete("calories");
-        oldFormData.delete("muscleGroup");
-        oldFormData.delete("unit");
-    }
-}
-
-window.addEventListener("DOMContentLoaded", async () => {
-    cancelButton = document.querySelector("#btn-cancel-exercise");
-    okButton = document.querySelector("#btn-ok-exercise");
-    deleteButton = document.querySelector("#btn-delete-exercise");
-    editButton = document.querySelector("#btn-edit-exercise");
-    oldFormData = null;
-
-    const urlParams = new URLSearchParams(window.location.search);
-
-    // view/edit
-    if (urlParams.has('id')) {
-        const exerciseId = urlParams.get('id');
-        await retrieveExercise(exerciseId);
-
-        editButton.addEventListener("click", handleEditExerciseButtonClick);
-        deleteButton.addEventListener("click", (async (id) => await deleteExercise(id)).bind(undefined, exerciseId));
-        okButton.addEventListener("click", (async (id) => await updateExercise(id)).bind(undefined, exerciseId));
-    }
-    //create
-    else {
-        setReadOnly(false, "#form-exercise");
-
-        editButton.className += " hide";
-        okButton.className = okButton.className.replace(" hide", "");
-        cancelButton.className = cancelButton.className.replace(" hide", "");
-
-        okButton.addEventListener("click", async () => await createExercise());
-        cancelButton.addEventListener("click", handleCancelButtonDuringCreate);
     }
 });
diff --git a/frontend/www/scripts/profilesettings.js b/frontend/www/scripts/profilesettings.js
new file mode 100644
index 0000000000000000000000000000000000000000..71af728c5738407d921f3734fcd1614fa20a8322
--- /dev/null
+++ b/frontend/www/scripts/profilesettings.js
@@ -0,0 +1,206 @@
+let cancelButton;
+let okButton;
+let deleteButton;
+let editButton;
+let oldFormData;
+
+//TODO change variablenames and check
+class gym {
+    constructor(type) {
+        this.isValidType = false;
+        this.validTypes = ["SIT", "IMPULS", "3T", "STAMINA"];
+
+        this.type = this.validTypes.includes(type) ? type : undefined;
+    };
+
+    setMuscleGroupType = (newType) => {
+        this.isValidType = false;
+
+        if(this.validTypes.includes(newType)){
+            this.isValidType = true;
+            this.type = newType;
+        }
+        else{
+            alert("Invalid gym!");
+        }
+
+    };
+
+    getMuscleGroupType = () => {
+        console.log(this.type, "SWIOEFIWEUFH")
+        return this.type;
+    }
+}
+
+function handleCancelButtonDuringEdit() {
+    console.log("fjpfjhpisdfhøidksfho")
+    /*
+    setReadOnly(true, "#form-exercise");
+    document.querySelector("select").setAttribute("disabled", "")
+    okButton.className += " hide";
+    deleteButton.className += " hide";
+    cancelButton.className += " hide";
+    editButton.className = editButton.className.replace(" hide", "");
+
+    cancelButton.removeEventListener("click", handleCancelButtonDuringEdit);
+
+    let form = document.querySelector("#form-exercise");
+    if (oldFormData.has("name")) form.name.value = oldFormData.get("name");
+    if (oldFormData.has("favouriteExercise")) form.name.value = oldFormData.get("favouriteExercise");
+    if (oldFormData.has("gymGroup")) form.muscleGroup.value = oldFormData.get("gymGroup");
+
+    oldFormData.delete("name");
+    oldFormData.delete("favouriteExercise");
+    oldFormData.delete("gymGroup");
+     */
+
+}
+
+function handleCancelButtonDuringCreate() {
+    window.location.replace("profile.html");
+}
+
+
+ async function createExercise() {
+    document.querySelector("select").removeAttribute("disabled")
+    console.log("dasdadasda")
+    let form = document.querySelector("#gym");
+    let formData = new FormData(form);
+    let body = {"name": formData.get("name"),
+        "description": formData.get("description"),
+        "duration": formData.get("duration"),
+        "calories": formData.get("calories"),
+        "muscleGroup": formData.get("gym"),
+        "unit": formData.get("unit")};
+
+    let response = await sendRequest("POST", `${HOST}/api/exercises/`, body);
+
+    if (response.ok) {
+        window.location.replace("exercises.html");
+    } else {
+        let data = await response.json();
+        let alert = createAlert("Coulds not create new exercise!", data);
+        document.body.prepend(alert);
+    }
+
+    console.log("TEST*IJG")
+} 
+
+function handleEditExerciseButtonClick() {
+    setReadOnly(false, "#form-exercise");
+
+    document.querySelector("select").removeAttribute("disabled")
+
+    editButton.className += " hide";
+    okButton.className = okButton.className.replace(" hide", "");
+    cancelButton.className = cancelButton.className.replace(" hide", "");
+    deleteButton.className = deleteButton.className.replace(" hide", "");
+
+    cancelButton.addEventListener("click", handleCancelButtonDuringEdit);
+
+    let form = document.querySelector("#form-exercise");
+    oldFormData = new FormData(form);
+}
+
+async function deleteExercise(id) {
+    let response = await sendRequest("DELETE", `${HOST}/api/exercises/${id}/`);
+    if (!response.ok) {
+        let data = await response.json();
+        let alert = createAlert(`Could not delete exercise ${id}`, data);
+        document.body.prepend(alert);
+    } else {
+        window.location.replace("exercises.html");
+    }
+}
+
+//Testing
+async function retrieveGym(id) {
+    let response = await sendRequest("GET", `${HOST}/api/users/${id}/`);
+
+    console.log(response.ok)
+
+    if (!response.ok) {
+        let data = await response.json();
+        let alert = createAlert("Could not retrieve exercise data!", data);
+        document.body.prepend(alert);
+    } else {
+        document.querySelector("select").removeAttribute("disabled")
+        let exerciseData = await response.json();
+        let form = document.querySelector("#gym");
+        let formData = new FormData(form);
+
+        for (let key of formData.keys()) {
+            let selector
+            key !== "gym" ? selector = `input[name="${key}"], textarea[name="${key}"]` : selector = `select[name=${key}]`
+            let input = form.querySelector(selector);
+            let newVal = exerciseData[key];
+            input.value = newVal;
+        }
+        document.querySelector("select").setAttribute("disabled", "")
+    }
+}
+
+async function updateGym(id) {
+    let form = document.querySelector("#gym");
+    let formData = new FormData(form);
+
+    let muscleGroupSelector = document.querySelector("select")
+    muscleGroupSelector.removeAttribute("disabled")
+
+    let selectedGym = new gym(formData.get("gym"));
+
+    let body = {
+        "gym": selectedGym.getMuscleGroupType(),};
+    let response = await sendRequest("PUT", `${HOST}/api/users/${id}/`, body);
+
+    if (!response.ok) {
+        let data = await response.json();
+        let alert = createAlert(`Could not update gym ${id}`, data);
+        document.body.prepend(alert);
+    } else {
+        muscleGroupSelector.setAttribute("disabled", "")
+        // duplicate code from handleCancelButtonDuringEdit
+        // you should refactor this
+        setReadOnly(true, "#form-exercise");
+        okButton.className += " hide";
+        deleteButton.className += " hide";
+        cancelButton.className += " hide";
+        editButton.className = editButton.className.replace(" hide", "");
+
+        cancelButton.removeEventListener("click", handleCancelButtonDuringEdit);
+
+        oldFormData.delete("gym");
+   
+    }
+}
+
+window.addEventListener("DOMContentLoaded", async () => {
+    cancelButton = document.querySelector("#btn-cancel-exercise");
+    okButton = document.querySelector("#btn-ok-exercise");
+    deleteButton = document.querySelector("#btn-delete-exercise");
+    editButton = document.querySelector("#btn-edit-exercise");
+    oldFormData = null;
+
+    const urlParams = new URLSearchParams(window.location.search);
+
+    // view/edit
+    if (urlParams.has('id')) {
+        const exerciseId = urlParams.get('id');
+        await retrieveExercise(exerciseId);
+
+        editButton.addEventListener("click", handleEditExerciseButtonClick);
+        deleteButton.addEventListener("click", (async (id) => await deleteExercise(id)).bind(undefined, exerciseId));
+        okButton.addEventListener("click", (async (id) => await updateGym(id)).bind(undefined, exerciseId));
+    }
+    //create
+    else {
+        setReadOnly(false, "#form-exercise");
+
+        editButton.className += " hide";
+        okButton.className = okButton.className.replace(" hide", "");
+        cancelButton.className = cancelButton.className.replace(" hide", "");
+
+        okButton.addEventListener("click", async () => await createExercise());
+        cancelButton.addEventListener("click", handleCancelButtonDuringCreate);
+    }
+});