diff --git a/CelestialObject.c b/CelestialObject.c
index 60f06c643ed407fa1c4769168f65c60594c0a6f3..be5a585f49afd604d922e3b6e743c65fa9ae7e01 100644
--- a/CelestialObject.c
+++ b/CelestialObject.c
@@ -41,7 +41,10 @@ void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, dou
         draw_disc(scaled_position, object->drawing_disc_radius);
 
     if (strcmp(object->name, "Moon") != 0) {
-        glLineWidth(4.0);
+        if (zoom_factor < 1)
+            glLineWidth(4.0 * zoom_factor);
+        else
+            glLineWidth(4.0);
 
         for (int32_t j = 0; j < object->points_length - 1; j += 1) {
             Vector2 p1 = scale_position(zoom_factor, object->points[j], reference_frame);
@@ -50,9 +53,15 @@ void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, dou
         }
     }
 
+    // celestial_object_draw_name(object, reference_frame,zoom_factor);
+}
+
+void celestial_object_draw_name(CelestialObject *object, Vector2 reference_frame, double zoom_factor) {
+    Vector2 scaled_position = scale_position(zoom_factor, object->current_position, reference_frame);
+
     if (strcmp(object->name, "Moon") == 0 && zoom_factor < 36) {
         return;
     }
 
-    draw_text(object->name, vector2_add(scaled_position, vector2_create(8, 32)));
+    draw_text(object->name, vector2_add(scaled_position, vector2_create(object->drawing_disc_radius + 8, 7)));
 }
diff --git a/CelestialObject.h b/CelestialObject.h
index cecf815d72fff0d3b5d29e380834ef519d64c3eb..bd7f28ff76ec05906620069a936af51ff6a1ddf9 100644
--- a/CelestialObject.h
+++ b/CelestialObject.h
@@ -18,5 +18,6 @@ typedef struct CelestialObject {
 
 CelestialObject *celestial_object_create(char *name, double mass, double semi_major_axis, double eccentricity, uint32_t drawing_disc_radius, uint32_t drawing_color);
 void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, double zoom_factor);
+void celestial_object_draw_name(CelestialObject *object, Vector2 reference_frame, double zoom_factor);
 
 #endif
diff --git a/PlanetarySystem.c b/PlanetarySystem.c
index 15f48cd846e37261697d420204358693cefe5dd7..5e244b763f315afcbaf43dcb07d0306310e8fc2d 100644
--- a/PlanetarySystem.c
+++ b/PlanetarySystem.c
@@ -134,6 +134,11 @@ void planetary_system_draw(PlanetarySystem *ps) {
         celestial_object_draw(object, reference_frame, ps->zoom_factor);
     }
 
+    for (int32_t i = 0; i < ps->objects_length; i += 1) {
+        CelestialObject *object = ps->objects[i];
+        celestial_object_draw_name(object, reference_frame, ps->zoom_factor);
+    }
+
     char text[200];
     sprintf(text, "Focused Object : %s", object_reference_frame->name);
     draw_text(text, vector2_create(8, 64));
diff --git a/main.c b/main.c
index 2847df6c73ea0e6aa929ede2dbbb2bc66a7b0d1b..39b543c4521a705ab20f5d6aa600d965f7298b12 100644
--- a/main.c
+++ b/main.c
@@ -1,3 +1,4 @@
+#include <GL/freeglut.h>
 #include <GL/glut.h>
 #include <stdint.h>
 #include <stdio.h>
@@ -52,7 +53,7 @@ void draw() {
 
     if (elapsed_time % REFRESH_RATE == 0 && elapsed_time != 0) {
         char title[100];
-        sprintf(title, "Solar System (%d : %lld)", elapsed_time / REFRESH_RATE, (time(NULL) - true_time_shift) % 1000);
+        sprintf(title, "Solar System (%d : %ld)", elapsed_time / REFRESH_RATE, (time(NULL) - true_time_shift) % 1000);
         glutSetWindowTitle(title);
     }
 
@@ -135,7 +136,6 @@ int main(int argc, char *argv[]) {
 
     glutTimerFunc(1000 / REFRESH_RATE, update_timer, 0);
     glutTimerFunc(1000 / REFRESH_RATE, draw_timer, 0);
-
     glutMainLoop();
 
     return EXIT_SUCCESS;