diff --git a/Exercises/1-for.js b/Exercises/1-for.js
index 62e6ab8..53a749a 100644
--- a/Exercises/1-for.js
+++ b/Exercises/1-for.js
@@ -1,9 +1,12 @@
 'use strict';
 
 const sum = (...args) => {
-  // Use for loop and accumulator variable
-  // to calculate sum of all given arguments
-  // For example sum(1, 2, 3) should return 6
+  let sum = 0;
+  for (let i = 0; i < args.length; i++) {
+    sum += args[i];
+  }
+
+  return sum;
 };
 
 module.exports = { sum };
diff --git a/Exercises/2-for-of.js b/Exercises/2-for-of.js
index 9965f25..8896908 100644
--- a/Exercises/2-for-of.js
+++ b/Exercises/2-for-of.js
@@ -1,9 +1,13 @@
 'use strict';
 
 const sum = (...args) => {
-  // Use for..of loop and accumulator variable
-  // to calculate sum of all given arguments
-  // For example sum(1, 2, 3) should return 6
+  let sum = 0;
+
+  for (const value of args) {
+    sum += value;
+  }
+
+  return sum;
 };
 
 module.exports = { sum };
diff --git a/Exercises/3-while.js b/Exercises/3-while.js
index 6110b9f..63fd72d 100644
--- a/Exercises/3-while.js
+++ b/Exercises/3-while.js
@@ -1,9 +1,15 @@
 'use strict';
 
 const sum = (...args) => {
-  // Use while loop and accumulator variable
-  // to calculate sum of all given arguments
-  // For example sum(1, 2, 3) should return 6
+  let sum = 0;
+  let i = 0;
+
+  while (i < args.length) {
+    sum += args[i];
+    i++;
+  }
+
+  return sum;
 };
 
 module.exports = { sum };
diff --git a/Exercises/4-do-while.js b/Exercises/4-do-while.js
index 22d4464..dc6b1d8 100644
--- a/Exercises/4-do-while.js
+++ b/Exercises/4-do-while.js
@@ -1,9 +1,14 @@
 'use strict';
 
 const sum = (...args) => {
-  // Use do..while loop and accumulator variable
-  // to calculate sum of all given arguments
-  // For example sum(1, 2, 3) should return 6
+  let sum = 0;
+  let i = 0;
+  do {
+    sum += args[i] || 0;
+    i = i + 1;
+  } while (i < args.length);
+
+  return sum;
 };
 
 module.exports = { sum };
diff --git a/Exercises/5-reduce.js b/Exercises/5-reduce.js
index a9cb44c..2e451fe 100644
--- a/Exercises/5-reduce.js
+++ b/Exercises/5-reduce.js
@@ -1,8 +1,5 @@
 'use strict';
 
-const sum = (...args) => 0;
-// Use Array.prototype.reduce method
-// to calculate sum of all given arguments
-// For example sum(1, 2, 3) should return 6
+const sum = (...args) => args.reduce((ac, val) => (ac += val), 0);
 
 module.exports = { sum };
diff --git a/Exercises/6-matrix.js b/Exercises/6-matrix.js
index b768c0a..1d22068 100644
--- a/Exercises/6-matrix.js
+++ b/Exercises/6-matrix.js
@@ -1,9 +1,15 @@
 'use strict';
 
 const max = matrix => {
-  // Use nested for loop to find max value in 2d matrix
-  // For example max([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
-  // should return 9
+  let max = 0;
+  for (let i = 0; i < matrix.length; i++) {
+    const row = matrix[i];
+    for (let j = 0; j < row.length; j++) {
+      const cell = row[j];
+      if (cell > max) max = cell;
+    }
+  }
+  return max;
 };
 
 module.exports = { max };
diff --git a/Exercises/7-ages.js b/Exercises/7-ages.js
index fc8089b..a4fe8db 100644
--- a/Exercises/7-ages.js
+++ b/Exercises/7-ages.js
@@ -1,19 +1,13 @@
 'use strict';
 
 const ages = persons => {
-  // Use for..in to calculate age for each person
-  // For example ages({
-  //   lenin: { born: 1870, died: 1924 },
-  //   mao: { born: 1893, died: 1976 },
-  //   gandhi: { born: 1869, died: 1948 },
-  //   hirohito: { born: 1901, died: 1989 },
-  // })
-  // should return {
-  //   lenin: 54,
-  //   mao: 83,
-  //   gandhi: 79,
-  //   hirohito: 88,
-  // }
+  let ages = {};
+  for (let name in persons) {
+    const person = persons[name];
+    ages[name] = person.died - person.born;
+  }
+
+  return ages;
 };
 
 module.exports = { ages };