diff --git a/CelestialObject.c b/CelestialObject.c
index b94e79268d28fa5d2e12170c503c5fa221896440..1d8298086abdbcc2c81574f0ad633b27402e013c 100644
--- a/CelestialObject.c
+++ b/CelestialObject.c
@@ -2,8 +2,8 @@
 
 #include <GL/glut.h>
 #include <stdlib.h>
+#include <string.h>
 
-#include "PlanetarySystem.h"
 #include "drawing.h"
 
 #define G 6.67e-11
@@ -29,29 +29,30 @@ CelestialObject *celestial_object_create(char *name, double mass, double semi_ma
     return object;
 }
 
-void draw_celestial_object(PlanetarySystem *planetary_system, int32_t i, Vector2 reference_frame) {
-    CelestialObject *object = planetary_system->objects[i];
-    Vector2 scaled_position = scale_position(planetary_system, object->current_position, reference_frame);
+void draw_celestial_object(CelestialObject *object, Vector2 reference_frame, double zoom_factor) {
+    Vector2 scaled_position = scale_position(zoom_factor, object->current_position, reference_frame);
 
     uint32_t color = object->drawing_color;
     glColor3ub((color & 0xFF0000) >> 16, (color & 0x00FF00) >> 8, (color & 0x0000FF) >> 0);
 
-    if (planetary_system->zoom_factor < 1)
-        draw_disc(scaled_position, object->drawing_disc_radius * planetary_system->zoom_factor);
+    if (zoom_factor < 1)
+        draw_disc(scaled_position, object->drawing_disc_radius * zoom_factor);
     else
         draw_disc(scaled_position, object->drawing_disc_radius);
 
-    if (i != 5) {
+    if (strcmp(object->name, "Moon") != 0) {
         glLineWidth(4.0);
 
         for (int32_t j = 0; j < object->points_length - 1; j += 1) {
-            Vector2 p1 = scale_position(planetary_system, object->points[j], reference_frame);
-            Vector2 p2 = scale_position(planetary_system, object->points[j + 1], reference_frame);
+            Vector2 p1 = scale_position(zoom_factor, object->points[j], reference_frame);
+            Vector2 p2 = scale_position(zoom_factor, object->points[j + 1], reference_frame);
             draw_line(p1, p2);
         }
     }
 
-    if (i == 5 && planetary_system->zoom_factor < 36)
+    if (strcmp(object->name, "Moon") == 0 && zoom_factor < 36) {
         return;
+    }
+
     draw_text(object->name, scaled_position);
 }
diff --git a/CelestialObject.h b/CelestialObject.h
index 84de0d456339bc8836114e36e9feef894c8b6060..02b013e7fe80d479b1a4fb1bc9cefbb3ca0a3426 100644
--- a/CelestialObject.h
+++ b/CelestialObject.h
@@ -3,7 +3,6 @@
 
 #include "Vector2.h"
 
-typedef struct PlanetarySystem PlanetarySystem;
 typedef struct CelestialObject {
     double mass;
     Vector2 previous_position;
@@ -18,6 +17,6 @@ typedef struct CelestialObject {
 } 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 draw_celestial_object(PlanetarySystem *planetary_system, int32_t i, Vector2 reference_frame);
+void draw_celestial_object(CelestialObject *object, Vector2 reference_frame, double zoom_factor);
 
 #endif
diff --git a/PlanetarySystem.c b/PlanetarySystem.c
index 24c0f356578ac928865c8cd5efa9013c332f1b3d..eac70b63b614fe6316969e1b43cd535bf7b87f78 100644
--- a/PlanetarySystem.c
+++ b/PlanetarySystem.c
@@ -41,6 +41,9 @@ PlanetarySystem *planetary_system_create() {
     planetary_system->zoom_factor = 1;
     planetary_system->reference_frame_object_index = 0;
 
+    char names[][100] = {"", "Mercury", "Venus", "Earth", "Mars", "Moon", "Naboo", "Jupitaire", "Endor"};
+    double masses[] = {MERCURY_MASS, VENUS_MASS, EARTH_MASS, MARS_MASS, 0, 0, 0, 0};
+
     // Sun
     planetary_system->objects[0] = celestial_object_create("", SUN_MASS, 0, 0, 50, 0xFFFFFF);
     // Mercury
@@ -138,6 +141,7 @@ void planetary_system_draw(PlanetarySystem *planetary_system) {
     Vector2 reference_frame = planetary_system->objects[planetary_system->reference_frame_object_index]->current_position;
 
     for (uint32_t i = 0; i < planetary_system->objects_length; i += 1) {
-        draw_celestial_object(planetary_system, i, reference_frame);
+        CelestialObject *object = planetary_system->objects[i];
+        draw_celestial_object(object, reference_frame, planetary_system->zoom_factor);
     }
 }
diff --git a/Vector2.h b/Vector2.h
index 5193d60d64997442db950d8b138b51541b128827..59e09d219f04d95537afa6b2ce8793ad099a8abf 100644
--- a/Vector2.h
+++ b/Vector2.h
@@ -4,11 +4,10 @@
 #include <stdbool.h>
 #include <stdint.h>
 
-typedef struct Vector2 Vector2;
-struct Vector2 {
+typedef struct Vector2 {
     double x;
     double y;
-};
+} Vector2;
 
 Vector2 vector2_create(double x, double y);
 Vector2 vector2_create_zero();
diff --git a/drawing.c b/drawing.c
index 9b073626dc29f43011d887d01d85e266c6465eb6..a8a799b6a5594676d729351b987085443e933a07 100644
--- a/drawing.c
+++ b/drawing.c
@@ -35,9 +35,9 @@ void draw_text(char *text, Vector2 position) {
     }
 }
 
-Vector2 scale_position(PlanetarySystem *planetary_system, Vector2 object_position, Vector2 reference_frame_position) {
+Vector2 scale_position(double zoom_factor, Vector2 object_position, Vector2 reference_frame_position) {
     Vector2 unscaled_position = vector2_substract(object_position, reference_frame_position);
-    unscaled_position = vector2_multiply(unscaled_position, planetary_system->zoom_factor);
+    unscaled_position = vector2_multiply(unscaled_position, zoom_factor);
 
     Vector2 scaled_position = vector2_multiply(unscaled_position, 1.0 / (300 * 1E9));
     scaled_position = vector2_fit_canvas(scaled_position, SCREEN_WIDTH, SCREEN_HEIGHT);
diff --git a/drawing.h b/drawing.h
index 447c2a2a9faa7c3640f78809aa06f2b6ef51d35d..b9de5c9cee093c4a22b3eb6b108bf8991f249096 100644
--- a/drawing.h
+++ b/drawing.h
@@ -3,12 +3,11 @@
 
 #include <stdint.h>
 
-#include "PlanetarySystem.h"
 #include "Vector2.h"
 
 void draw_disc(Vector2 position, uint32_t radius);
 void draw_line(Vector2 a, Vector2 b);
 void draw_text(char *text, Vector2 position);
-Vector2 scale_position(PlanetarySystem *planetary_system, Vector2 object_position, Vector2 reference_frame_position);
+Vector2 scale_position(double zoom_factor, Vector2 object_position, Vector2 reference_frame_position);
 
 #endif