diff --git a/Assignment-06/starter/rsh_server.c b/Assignment-06/starter/rsh_server.c
index 746672a629ce889c36d310f49df22c64ffbc7ca9..23042576d4b3cdbe8b591f2fd386329f20a1a609 100644
--- a/Assignment-06/starter/rsh_server.c
+++ b/Assignment-06/starter/rsh_server.c
@@ -225,7 +225,6 @@ int process_cli_requests(int svr_socket) {
         }
         printf("SERVER: Client connected. Socket: %d\n", cli_socket);
 
-        // Receive data from the client
         bytes_received = recv(cli_socket, buffer, sizeof(buffer), 0);
         if (bytes_received < 0) {
             perror("SERVER: recv failed");
@@ -241,7 +240,8 @@ int process_cli_requests(int svr_socket) {
 
         // Null-terminate the received data
         buffer[bytes_received] = '\0';
-        printf("SERVER: Received command: %s\n", buffer);
+        printf("SERVER: Received %zd bytes: %s\n", bytes_received, buffer);
+
 
         // Check for special commands
         if (strncmp(buffer, "stop-server", strlen("stop-server")) == 0) {
@@ -505,39 +505,45 @@ int send_message_string(int cli_socket, char *buff){
  *                  get this value. 
  */
 
-int rsh_execute_pipeline(int cli_sock, command_list_t *clist) {
+
+ int rsh_execute_pipeline(int cli_sock, command_list_t *clist) {
     int pipes[clist->num - 1][2];  // Array of pipes
     pid_t pids[clist->num];
     int pids_st[clist->num];       // Array to store process statuses
     int exit_code;
 
+    printf("SERVER: Executing pipeline with %d commands.\n", clist->num);
+
     // Create all necessary pipes
     for (int i = 0; i < clist->num - 1; i++) {
         if (pipe(pipes[i]) == -1) {
-            perror("pipe");
+            perror("SERVER: pipe failed");
             return ERR_RDSH_COMMUNICATION;
         }
+        printf("SERVER: Created pipe %d.\n", i);
     }
 
     // Fork and execute each command in the pipeline
     for (int i = 0; i < clist->num; i++) {
+        printf("SERVER: Forking for command %d: %s\n", i, clist->commands[i].argv[0]);
         pids[i] = fork();
         if (pids[i] == -1) {
-            perror("fork");
+            perror("SERVER: fork failed");
             return ERR_RDSH_COMMUNICATION;
         }
 
         if (pids[i] == 0) {  // Child process
+            printf("SERVER: Child process %d executing command: %s\n", i, clist->commands[i].argv[0]);
             // Redirect input for the first command
             if (i == 0) {
                 if (dup2(cli_sock, STDIN_FILENO) == -1) {
-                    perror("dup2 stdin");
+                    perror("SERVER: dup2 stdin failed");
                     exit(EXIT_FAILURE);
                 }
             } else {
                 // Redirect stdin to the read end of the previous pipe
                 if (dup2(pipes[i - 1][0], STDIN_FILENO) == -1) {
-                    perror("dup2 stdin");
+                    perror("SERVER: dup2 stdin failed");
                     exit(EXIT_FAILURE);
                 }
             }
@@ -546,17 +552,17 @@ int rsh_execute_pipeline(int cli_sock, command_list_t *clist) {
             if (i == clist->num - 1) {
                 // Redirect stdout and stderr to the client socket
                 if (dup2(cli_sock, STDOUT_FILENO) == -1) {
-                    perror("dup2 stdout");
+                    perror("SERVER: dup2 stdout failed");
                     exit(EXIT_FAILURE);
                 }
                 if (dup2(cli_sock, STDERR_FILENO) == -1) {
-                    perror("dup2 stderr");
+                    perror("SERVER: dup2 stderr failed");
                     exit(EXIT_FAILURE);
                 }
             } else {
                 // Redirect stdout to the write end of the current pipe
                 if (dup2(pipes[i][1], STDOUT_FILENO) == -1) {
-                    perror("dup2 stdout");
+                    perror("SERVER: dup2 stdout failed");
                     exit(EXIT_FAILURE);
                 }
             }
@@ -569,7 +575,7 @@ int rsh_execute_pipeline(int cli_sock, command_list_t *clist) {
 
             // Execute the command
             execvp(clist->commands[i].argv[0], clist->commands[i].argv);
-            perror("execvp");
+            perror("SERVER: execvp failed");
             exit(EXIT_FAILURE);
         }
     }
@@ -581,8 +587,10 @@ int rsh_execute_pipeline(int cli_sock, command_list_t *clist) {
     }
 
     // Wait for all children
+    printf("SERVER: Parent process waiting for children...\n");
     for (int i = 0; i < clist->num; i++) {
         waitpid(pids[i], &pids_st[i], 0);
+        printf("SERVER: Child process %d exited with status: %d\n", i, WEXITSTATUS(pids_st[i]));
     }
 
     // Determine the exit code
@@ -594,5 +602,6 @@ int rsh_execute_pipeline(int cli_sock, command_list_t *clist) {
         }
     }
 
+    printf("SERVER: Pipeline execution complete. Exit code: %d\n", exit_code);
     return exit_code;
 }