diff --git a/codes/c_lang/min_list/min_list.c b/codes/c_lang/min_list/min_list.c
index dba091455903c1416c8936213de5473fd8ec49f9..ac1c0bade4387c8e2a517fec838e38560ce56f80 100644
--- a/codes/c_lang/min_list/min_list.c
+++ b/codes/c_lang/min_list/min_list.c
@@ -7,6 +7,8 @@
 
 #define MAX_INT 100
 
+typedef enum _result { ok, err_invalid_size, err_is_null } result;
+
 const char *usage_msg =
     "Error wrong number of arguments.\n"
     "Usage: ./min_list <num1> <num2> ...\n"
@@ -18,13 +20,13 @@ const char *usage_msg =
 int *list_find_min(int32_t *tab, int size);
 
 // Prints all the element in the tab array.
-// Returns -1 if size <= 0
-// Returns -2 if tab is NULL
-// Any other value means that everything went fine
-int list_print(int32_t *tab, int size);
+// Returns err_invalid_size if size <= 0
+// Returns err_is_null if tab is NULL
+// Returns ok if everything went fine
+result list_print(int32_t *tab, int size);
 
 // Exits if the error code shows invalidity
-void error_handling(int error_code, int32_t **tab);
+void error_handling(result error_code, int32_t **tab);
 
 // Parses a string to an integer.
 // Returns a pointer to newly allocated data.
@@ -57,10 +59,7 @@ int *read_input(int size, char *char_num[]) {
 
 int main(int argc, char *argv[]) {
     if (argc == 1) {
-        fprintf(stderr,
-                "Error wrong number of arguments.\n"
-                "%s",
-                usage_msg);
+        fprintf(stderr, "%s", usage_msg);
         return EXIT_FAILURE;
     }
 
@@ -98,19 +97,19 @@ int min_i32(int32_t lhs, int32_t rhs) {
 }
 
 // Checks if size is valid and tab is not NULL
-int list_is_valid(int32_t *tab, int size) {
+result list_is_valid(int32_t *tab, int size) {
     if (size <= 0) {
-        return -1;
+        return err_invalid_size;
     }
     if (NULL == tab) {
-        return -2;
+        return err_is_null;
     }
-    return 0;
+    return ok;
 }
 
-int list_print(int32_t *tab, int size) {
-    int code = list_is_valid(tab, size);
-    if (code < 0) {
+result list_print(int32_t *tab, int size) {
+    result code = list_is_valid(tab, size);
+    if (code != ok) {
         return code;
     }
 
@@ -122,8 +121,8 @@ int list_print(int32_t *tab, int size) {
 }
 
 int32_t *list_find_min(int32_t *tab, int size) {
-    int code = list_is_valid(tab, size);
-    if (code < 0) {
+    result code = list_is_valid(tab, size);
+    if (code != ok) {
         return NULL;
     }
 
@@ -135,21 +134,21 @@ int32_t *list_find_min(int32_t *tab, int size) {
     return min;
 }
 
-void error_handling(int error_code, int32_t **tab) {
+void error_handling(result error_code, int32_t **tab) {
     switch (error_code) {
-        case -1:
+        case err_invalid_size:
             fprintf(stderr, "Return value, %d. Size is <= 0.\n", error_code);
             free(*tab);
             *tab = NULL;
             exit(EXIT_FAILURE);
             break;
-        case -2:
+        case err_is_null:
             fprintf(stderr, "Tab is NULL.\n");
             free(*tab);
             *tab = NULL;
             exit(EXIT_FAILURE);
             break;
-        default:
+        case ok:
             break;
     }
 }
@@ -163,7 +162,7 @@ int32_t *parse_int32(char *arg_to_transform) {
     long arg = strtol(arg_to_transform, &remaining,
                       10);  // number is parsed in base 10
     if (*remaining != '\0' || errno != 0) {
-        return NULL;        // Empty string parsed or an error occurred
+        return NULL;  // Empty string parsed or an error occurred
     }
 
     if (arg < INT_MIN || arg > INT_MAX) {