diff --git a/src/delaunay.c b/src/delaunay.c
index fcdcca87847be230d21ba3d3267377759a9124e8..812294eb9c845292a511935ee5e20a74e767358b 100644
--- a/src/delaunay.c
+++ b/src/delaunay.c
@@ -89,6 +89,19 @@ double det2(double a, double b, double c, double d) {
 	return a*d-b*c;
 }
 
+void circleCenter(const vertex* v1, const vertex* v2, const vertex* v3,
+		vertex* center) {
+	double ax = 2 * (v1->x - v2->x);
+	double bx = 2 * (v1->y - v2->y);
+	double cx = v1->x * v1->x - v2->x * v2->x + v1->y * v1->y - v2->y * v2->y;
+	double ay = 2 * (v1->x - v3->x);
+	double by = 2 * (v1->y - v3->y);
+	double cy = v1->x * v1->x - v3->x * v3->x + v1->y * v1->y - v3->y * v3->y;
+	double det = det2(ax, bx, ay, by);
+	center->x = det2(cx, bx, cy, by) / det;
+	center->y = det2(ax, cx, ay, cy) / det;
+}
+
 /*
  * https://stackoverflow.com/questions/22791951/algorithm-to-find-an-arc-its-center-radius-and-angles-given-3-points
  * https://de.wikipedia.org/wiki/Cramersche_Regel
@@ -97,15 +110,7 @@ double det2(double a, double b, double c, double d) {
 //TODO seperate radius from this function
 circle circleFrom3Points(vertex v1, vertex v2, vertex v3) {
 	circle c;
-	double ax = 2*(v1.x-v2.x);
-	double bx = 2*(v1.y-v2.y);
-	double cx = v1.x*v1.x - v2.x*v2.x + v1.y*v1.y - v2.y*v2.y;
-	double ay = 2*(v1.x-v3.x);
-	double by = 2*(v1.y-v3.y);
-	double cy = v1.x*v1.x - v3.x*v3.x + v1.y*v1.y - v3.y*v3.y;
-	double det = det2(ax, bx, ay, by);
-	c.center.x = det2(cx, bx, cy, by)/det;
-	c.center.y = det2(ax, cx, ay, cy)/det;
+	circleCenter(&v1, &v2, &v3, &c.center);
 	c.radius = sqrt((v1.x-c.center.x)*(v1.x-c.center.x)+(v1.y-c.center.y)*(v1.y-c.center.y));
 	return c;
 }
diff --git a/src/main.c b/src/main.c
index 845c9411bdf29871d4dedecb4538fd4f6881e73b..49640866c62e4b74cae63ba6b4bd0e6ecb24da19 100644
--- a/src/main.c
+++ b/src/main.c
@@ -13,7 +13,7 @@ int main(int argc, char *argv[]) {
 	//input: 1. function 0=cws_delaunay 2. # of points, 3. # of executions
     //create_image();
     //write_ppm ( "sine.ppm" );
-	int numberOfPoints = 2000;
+	int numberOfPoints = 10000;
 	int function = 0;
 	int executions = 1;
 	if(argc > 0) {
diff --git a/src/voronoi.c b/src/voronoi.c
index 250a769a3b6466fbee54a3d06eefcdaec7a70122..15bafae9de32c9dc458d174b500c0a09ad234927 100644
--- a/src/voronoi.c
+++ b/src/voronoi.c
@@ -83,7 +83,8 @@ void voronoiCws(vertex* S, int size) {
 			int isTriangle;
 			clockwiseNextDelaunayEdge(&i, &j, &k, S, &size, &isTriangle);
 			if(isTriangle == 2) {
-				currentV = vertexCircle2vertex((vertexCircle){S[i], S[j], S[k]});
+				//currentV = vertexCircle2vertex((vertexCircle){S[i], S[j], S[k]});
+				circleCenter(S[i], S[j], S[k], currentV);
 				if(first) {
 					first = 0;
 					firstV = currentV;