diff --git a/src/symbol_table_parse.c b/src/symbol_table_parse.c
index 5c05ce8da40936adfd080f63ca2ec08e4dd07fd4..38e8dbe9e0670c84cc983ef8ad5b0df33a63d073 100644
--- a/src/symbol_table_parse.c
+++ b/src/symbol_table_parse.c
@@ -3,6 +3,7 @@
 #include <stdlib.h>
 #include <assert.h>
 #include "mcc/ast.h"
+#include "mcc/ast_print.h"
 #include "mcc/symbol_table_parse.h"
 #include "utils/unused.h"
 
@@ -137,7 +138,7 @@ int mcc_symbol_table_parse_statement(
     struct mcc_symbol_table *table = symbol_table;
 
     if (create_new) {
-        table = mcc_symbol_table_create_inner_table(symbol_table,symbol_table->parent->sym_table_name);
+        table = mcc_symbol_table_create_inner_table(symbol_table,"COMPOUND_STMT");
     }
 
     switch(statement->type) {
@@ -340,6 +341,7 @@ struct mcc_symbol_table *mcc_symbol_table_build_program(struct mcc_ast_program *
     assert(program);
 
     struct mcc_symbol_table *st = mcc_symbol_table_new_table(NULL);
+    st->sym_table_name = "functions";
 
     mcc_symbol_table_add_builtins(st);
 
@@ -361,7 +363,7 @@ struct mcc_symbol_table *mcc_symbol_table_build_function(struct mcc_ast_function
     assert(function);
 
     struct mcc_symbol_table *st = mcc_symbol_table_new_table(NULL);
-
+    st->sym_table_name = "functions";
     mcc_symbol_table_add_builtins(st);
 
     int parse_function = mcc_symbol_table_add_function_declaration(function, st, ec);
diff --git a/src/symbol_table_print.c b/src/symbol_table_print.c
index e842160ca06c037276726bacb652b32f89a2c945..f264e7437c50d3e1caab5699625e565313cd5f61 100644
--- a/src/symbol_table_print.c
+++ b/src/symbol_table_print.c
@@ -5,6 +5,8 @@
 #include "mcc/symbol_table.h"
 #include "mcc/symbol_table_print.h"
 
+int global_level;
+
 static char *type_to_string(enum mcc_ast_data_type type){
     switch (type)
     {
@@ -29,13 +31,20 @@ static char *symbol_type_to_string(enum mcc_symbol_type type){
 }
 
 void mcc_symbol_table_print(struct mcc_symbol_table *symbol_table, FILE *out, int level){
+    printf("----------------------------------\n");
+	printf("Table: %s // Child of: %s\n", symbol_table ? symbol_table->sym_table_name : "no name",
+	       symbol_table->parent ? symbol_table->parent->sym_table_name : "no parent");
+	printf("----------------------------------\n");
      for(int i = 0; i < symbol_table->symbols->size; i++){
         struct mcc_symbol *sym = (struct mcc_symbol *) symbol_table->symbols->arr[i];
 
              if(sym->symbol_type != MCC_SYMBOL_TYPE_FUNCTION){
                 fprintf(out,"\t");
             }
-        
+            for(int j = 1;j < global_level;j++){
+                fprintf(out,"\t");
+            }     
+       
             fprintf(out,"%*s | ", 15, symbol_type_to_string(sym->symbol_type));
             fprintf(out,"%*s | ", 6, type_to_string(sym->data_type));
 
@@ -43,7 +52,7 @@ void mcc_symbol_table_print(struct mcc_symbol_table *symbol_table, FILE *out, in
                 case MCC_SYMBOL_TYPE_BUILTIN_FUNCTION:
                 case MCC_SYMBOL_TYPE_VARIABLE: 
                     fprintf(out,"%s", sym->variable_name); 
-                    break;
+                break;   
                 case MCC_SYMBOL_TYPE_ARRAY: 
                     fprintf(out,"%s[%ld]", sym->variable_name, sym->array_size);
                     break;
@@ -63,15 +72,14 @@ void mcc_symbol_table_print(struct mcc_symbol_table *symbol_table, FILE *out, in
                     }else{
                         fprintf(out,"%s()", sym->variable_name);
                     }
-                     fprintf(out,"\n");
-                
+                    fprintf(out,"\n");
                     break;
 
             }
             
             fprintf(out,"\n");
     }
-    for (int i = 0; i < symbol_table->inner_tables->size; i++) {
+    for (int i = 0; i < symbol_table->inner_tables->size; i++) {     
 		mcc_symbol_table_print(symbol_table->inner_tables->arr[i],out,i);
 	}
 }