diff --git a/sirius.cpp b/sirius.cpp
index 2edc5d7e052b67dad1243234766ee9aa82623be7..8c3343fdf34c3da4912dee1b26651686d841297a 100644
--- a/sirius.cpp
+++ b/sirius.cpp
@@ -234,7 +234,7 @@ class Triangulated : public Drawable {
         for (auto currEdgeStart = getNextVertex(currVertex);
              currEdgeStart != getPreviousVertex(currVertex);
              currEdgeStart = getNextVertex(currEdgeStart)
-            )
+                )
             if (intersectEachOther(*currEdgeStart, *getNextVertex(currEdgeStart),
                                    currPotDiag1, currPotDiag2)) {
                 return false;
@@ -253,7 +253,7 @@ class Triangulated : public Drawable {
         for (auto currEdgeStart = remainingVertices.begin();
              currEdgeStart != remainingVertices.end();
              currEdgeStart++
-            )
+                )
             if (intersectEachOther(*currEdgeStart, *getNextVertex(currEdgeStart),
                                    middle, infinity))
                 numberOfIntersections++;
@@ -277,7 +277,7 @@ public:
                 vertices.push_back(*getNextVertex(currVertex));
                 vertices.push_back(*getPreviousVertex(currVertex));
                 remainingVertices.erase(currVertex);
-                currVertex = vertices.begin();
+                currVertex = remainingVertices.begin();
             }
             currVertex = getNextVertex(currVertex);
         }
@@ -298,18 +298,15 @@ class SiriusTriangle : public Drawable {
     Triangulated triangulated;
 
 public:
-    int n = 0;
-
-    void addPoint(vec2 p) {
-        n++;
-        points.emplace_back(p);
-        if (n > 3) printf("Can't add 4th point to a triangle!\n");
-        if (n == 2) generateLineSegment(points[0], points[1]);
-        if (n == 3) {
-            generateLineSegment(points[2], points[0]);
-            generateLineSegment(points[1], points[2]);
-            triangulated = Triangulated(vertices);
-        }
+    SiriusTriangle(vec2 a, vec2 b, vec2 c) {
+        points.emplace_back(a);
+        points.emplace_back(b);
+        points.emplace_back(c);
+        generateLineSegment(points[0], points[1]);
+        generateLineSegment(points[2], points[0]);
+        generateLineSegment(points[1], points[2]);
+        triangulated = Triangulated(vertices);
+        init();
     }
 
     void generateLineSegment(Point p1, Point p2) {
@@ -345,65 +342,34 @@ public:
 
         for (int i = 0; i < SIRIUS_CIRCLE_SEGMENTS; i++) {
             vertices.emplace_back(
-                c.r * cos(curr) + c.c.x,
-                c.r * sin(curr) + c.c.y
+                    c.r * cos(curr) + c.c.x,
+                    c.r * sin(curr) + c.c.y
             );
             curr += step;
         }
     }
 
     void draw() override {
-        //filling out the triangulated area
-        if (n == 3)
-            triangulated.draw();
-
-        //Time to draw the edges
-        if (n == 3) {
-            init();
-            glBindVertexArray(vao); // Draw call
-            setColor(vec3(0.6, 0.2, 0.6));
-            glDrawArrays(GL_LINE_LOOP, 0, vertices.size());
-        }
-
-        for (auto &point: points)
-            point.draw();
-    }
-};
-
-class SiriusTriangleManager {
-public:
-    std::vector<SiriusTriangle> triangles;
-    int currTriangle = 0;
-    int currPoints = 0;
-
-    SiriusTriangleManager() = default;
-
-    void addPoint(vec2 p) {
-        if (currPoints == 0)
-            triangles.emplace_back();
-        triangles[currTriangle].addPoint(p);
-        currPoints++;
+        glBindVertexArray(vao); // Draw call
+        setColor(vec3(0.6, 0.2, 0.6));
+        glDrawArrays(GL_LINE_LOOP, 0, vertices.size());
 
-        if (currPoints == 3) currTriangle++, currPoints = 0;
-    }
+        //for (auto &point: points)
+        //    point.draw();
 
-    void draw() {
-        for (auto triangle: triangles)
-            triangle.draw();
+        triangulated.draw();
     }
 };
 
 BaseCircle baseCircle = BaseCircle();
-SiriusTriangleManager siriusTriangleManager = SiriusTriangleManager();
+std::vector<SiriusTriangle> triangles;
 
 // Initialization, create an OpenGL context
 void onInitialization() {
     glViewport(0, 0, windowWidth, windowHeight);
 
     baseCircle.init();
-    siriusTriangleManager.addPoint(vec2(-0.8, -0.2));
-    siriusTriangleManager.addPoint(vec2(-0.2, -0.6));
-    siriusTriangleManager.addPoint(vec2(-0.6, 0.4));
+    triangles.emplace_back(vec2(-0.8, -0.2), vec2(-0.2, -0.6), vec2(-0.6, 0.4));
 
     // create program for the GPU
     gpuProgram.create(vertexSource, fragmentSource, "outColor");
@@ -419,7 +385,8 @@ void onDisplay() {
     setColor(vec3(0, 0.3, 0.5));
 
     baseCircle.draw();
-    siriusTriangleManager.draw();
+    for (SiriusTriangle &t : triangles)
+        t.draw();
 
     glutSwapBuffers(); // exchange buffers for double buffering
 }
@@ -472,8 +439,8 @@ void onMouse(int button, int state, int pX,
     }
 
     if (state == GLUT_DOWN && button == GLUT_LEFT_BUTTON) {
-        siriusTriangleManager.addPoint(vec2(cX, cY));
-        siriusTriangleManager.draw();
+        /*siriusTriangleManager.addPoint(vec2(cX, cY));
+        siriusTriangleManager.draw();*/
         glutPostRedisplay();
     }
 }