diff --git a/.gitignore b/.gitignore
index df49f5531e13ef66944f068c9240261f302bed9c..9cd8b607439442334b69b4389fc6cbb0b8b0c2bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@
 /.cproject
 /Release/
 /test.ps
+/output.html
diff --git a/src/delaunay.c b/src/delaunay.c
index c37b4df3f86c093b097c98306a38d8acbbec63c7..1c2b7c588484b2d5d1c1a205b60e0004e96fb2c1 100644
--- a/src/delaunay.c
+++ b/src/delaunay.c
@@ -36,13 +36,13 @@ int comparePointsByX (const void * a, const void * b) {
 	return 1;
 }*/
 
-int reportTriangle(vertex* p, int size, FILE *out) {
+int reportTriangle(vertex a, vertex b, vertex c) {
 
 	//qsort (p, size, sizeof(*p), comparePointsByX);
 
 	//char *color = "255,0,0";
 
-	svgDrawTriangle(*(p), *(p+1), *(p+2), out);
+	svgDrawTriangle(a, b, c);
 
 	/*edge l = {p[0], p[1]};
 	svgDrawLine(l, out, color);
@@ -236,7 +236,7 @@ int arrayContains(int *jAlreadyUsed, int numberOfJ, int j){
 	return 0;
 }
 
-void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int *right, FILE *out) {
+void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int *right) {
 	//0: r not initialized, 1: r is left, 2: r is right
 	*right = 0;
 	double maxAngle;
@@ -283,7 +283,7 @@ void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int
 
 
 
-void delaunayCws(vertex* S, int size, FILE *out, int draw) {
+void delaunayCws(vertex* S, int size) {
 	//struct Triangle delaunayTriangles[size-2];
 	for(int i = 0; i < size; i++){
 		//TODO eventuell nur j zurueckgeben (i haben wir ja schon)
@@ -294,14 +294,12 @@ void delaunayCws(vertex* S, int size, FILE *out, int draw) {
 			//TODO eventuell nur k zurueckgeben (i haben wir ja schon)
 			int k;
 			int isTriangle;
-			clockwiseNextDelaunayEdge(&i, &j, &k, S, &size, &isTriangle, out);
+			clockwiseNextDelaunayEdge(&i, &j, &k, S, &size, &isTriangle);
 			if(i < j && i < k) {
 				if(isTriangle == 2){
-					vertex tri[3] = {S[i], S[j], S[k]};
-
-					if(draw){
-						reportTriangle(tri, 3, out);
-					}
+#ifdef OUTPUTFILE
+						reportTriangle(S[i], S[j], S[k]);
+#endif
 				}
 			}
 			j = k;
diff --git a/src/delaunay.h b/src/delaunay.h
index 228a9922fdd23cae61712cf12ce37c12c56ee073..68d4a21058efcc809eea8d0b6b4dd9b87f8227dc 100644
--- a/src/delaunay.h
+++ b/src/delaunay.h
@@ -16,17 +16,17 @@
 #include "helper.h"
 
 
-int reportTriangle(vertex* p, int size, FILE *out);
+int reportTriangle(vertex, vertex, vertex);
 circle circle_vvv(vertex, vertex, vertex);
 void readFile(char*, char*);
 vertex vector(vertex, vertex);
 double distance(vertex, vertex);
 void generatePoints(vertex*, int);
 void printPoint(vertex);
-void delaunayCws(vertex*, int, FILE*, int);
+void delaunayCws(vertex*, int);
 void drawPoints(vertex*, int);
 void write_ppm(const char*);
-void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int *right, FILE *out);
+void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int *right);
 int firstDelaunayEdgeIncidentTo(int j, vertex* S, int size);
 char* vertexToString(vertex);
 circle circleFrom3Points(vertex, vertex, vertex);
diff --git a/src/dwyer.c b/src/dwyer.c
index 92b8d319ce6b9fb3e00d2b1c6e8aa003599971e9..9cdc0e4d15f716c605ffd94929832eb591bd9d70 100644
--- a/src/dwyer.c
+++ b/src/dwyer.c
@@ -533,8 +533,8 @@ else { /* Quicksort */
 
 /* plots a site on your favorite device. */
 plot_site(v) VERTEX_PTR v; {
-#ifdef POSTSCRIPT
-	printf("p%d drawsite\n", v);
+#ifdef OUTPUTFILE
+	fprintf(out, "p%d drawsite\n", v);
 #endif
  }
 
diff --git a/src/helper.c b/src/helper.c
index 6d7aa6ec0941f82d2e903b3eb6cc55a73b441a12..cfbf2ad3c06fd00f575cb611559a8a72bf5b7726 100644
--- a/src/helper.c
+++ b/src/helper.c
@@ -7,23 +7,39 @@
 
 #include "helper.h"
 
-void svgDrawLine(edge l, FILE *out, char *color) {
+void svgDrawLine(edge l, char *color) {
+#ifdef OUTPUTFILE
 	fprintf(out, "<line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" style=\"stroke:rgb(%s);stroke-width:1\" />\n", l.a.x*W, l.a.y*H, l.b.x*W, l.b.y*H, color);
+#endif
 }
 
-void svgDrawCircle(circle c, FILE *out) {
+void svgDrawCircle(circle c) {
+#ifdef OUTPUTFILE
 	fprintf(out, "<circle cx=\"%f\" cy=\"%f\" r=\"%f\" stroke=\"green\" stroke-width=\"1\" fill=\"none\" />", c.center.x*W, c.center.y*H, c.radius*W);
+#endif
 }
 
-void svgDrawTriangle(vertex a, vertex b, vertex c, FILE *out) {
+void svgDrawTriangle(vertex a, vertex b, vertex c) {
+#ifdef OUTPUTFILE
 	fprintf(out, "<polygon points=\"%f,%f %f,%f %f,%f\" style=\"fill:none;stroke:purple;stroke-width:1\" />", a.x*W, a.y*H, b.x*W, b.y*H, c.x*W, c.y*H);
+#endif
 }
 
-void writeSvgStart (FILE *out) {
+void svgDrawSite(vertex v) {
+#ifdef OUTPUTFILE
+	fprintf(out, "<circle cx=\"%f\" cy=\"%f\" r=\"%f\" stroke=\"black\" stroke-width=\"1\" fill=\"black\" />", v.x*W, v.y*H, 2);
+#endif
+}
+
+void writeSvgStart () {
+#ifdef OUTPUTFILE
     fprintf (out, "<!DOCTYPE html>\n<html>\n<body>\n<svg width=\"%d\" height=\"%d\">\n", W, H);
+#endif
 }
 
-void writeSvgEnd (FILE *out) {
+void writeSvgEnd () {
+#ifdef OUTPUTFILE
     fprintf (out, "</svg>\n</body>\n</html>\n");
+#endif
 }
 
diff --git a/src/helper.h b/src/helper.h
index ab2ffaf0e2577e84374b23c4c7c0c4f03cf59e4a..581f2f955e593a70bfc702da460722bdd47d70fd 100644
--- a/src/helper.h
+++ b/src/helper.h
@@ -34,10 +34,10 @@ typedef struct {
 	vertex b;
 } edge;
 
-void writeSvgStart (FILE*);
-void writeSvgEnd (FILE*);
-void svgDrawLine(edge, FILE *, char *);
-void svgDrawCircle(circle, FILE *);
-void svgDrawTriangle(vertex, vertex, vertex, FILE*);
+void writeSvgStart ();
+void writeSvgEnd ();
+void svgDrawLine(edge, char *);
+void svgDrawCircle(circle);
+void svgDrawTriangle(vertex, vertex, vertex);
 
 #endif /* HELPER_H_ */
diff --git a/src/main.c b/src/main.c
index e442abf137c5afb086ebbc075ce5aea005ce3fc7..28982b32de4c61af67acc19c9f8bc931db99fabc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -5,16 +5,21 @@
  *      Author: Mika
  */
 
+#define OUTPUTFILE "output.html"
+
 #include "delaunay.h"
 #include "voronoi.h"
 
+#ifdef OUTPUTFILE
+FILE *out;
+#endif
+
 int main(int argc, char *argv[]) {
-	//input: 1. function 0=cws_delaunay 2. # of points, 3. draw? 4. # of executions
+	//input: 1. function 0=cws_delaunay 2. # of points, 3. # of executions
     //create_image();
     //write_ppm ( "sine.ppm" );
 	int numberOfPoints = 10000;
 	int function = 0;
-	int draw = 0;
 	int executions = 1;
 	if(argc > 0) {
 		//printf("%s\n", argv[0]);
@@ -26,58 +31,53 @@ int main(int argc, char *argv[]) {
 	}
 
 
-	//puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
-	//printf("%d\n", RAND_MAX);
 	vertex points[numberOfPoints];
-	printf("%lu\n", sizeof(points));
 	generatePoints(points, numberOfPoints);
+	printf("%u\n", sizeof(points));
+	fflush(stdout);
 	//drawPoints(points, numberOfPoints);
 
+#ifdef OUTPUTFILE
+	out = fopen ( OUTPUTFILE, "w" );
+	writeSvgStart ( out );
+#endif
+
 	clock_t begin = clock();
 
 	switch(function){
 					case 0:
 						for(int i = 0; i < executions; i++) {
-							FILE *out = NULL;
-							if(draw) {
-								out = fopen ( "delaunay.html", "w" );
-								writeSvgStart ( out );
-							}
-							delaunayCws(points, numberOfPoints, out, draw);
-							if(draw){
-								writeSvgEnd ( out );
-								fclose(out);
-							}
+							delaunayCws(points, numberOfPoints);
 						}
 						break;
 					case 1:
 						for(int i = 0; i < executions; i++) {
-							FILE *out = NULL;
-							if(draw) {
-
-								out = fopen ( "voronoi.html", "w" );
-								writeSvgStart ( out );
-							}
-							voronoiCws(points, numberOfPoints, out, draw);
-							if(draw){
-								writeSvgEnd ( out );
-								fclose(out);
-							}
+							voronoiCws(points, numberOfPoints);
 						}
 						break;
 					case 2:
-						dwyer('m', points, numberOfPoints);
+						printf("test\n");
+						fflush(stdout);
+						for(int i = 0; i < executions; i++) {
+							dwyer('m', points, numberOfPoints);
+						}
+						break;
 					default:
 						break;
 	}
 
 	clock_t end = clock();
+
+#ifdef OUTPUTFILE
+		writeSvgEnd ( out );
+		fclose(out);
+#endif
+
 	double number_of_clocks = (double) (end-begin);
 	double time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
 
 	printf("Number of clocks: %f\n", number_of_clocks);
 
 	printf("Time spent: %f\n", time_spent);
-	//readFile("test.txt", "r");
 	return EXIT_SUCCESS;
 }
diff --git a/src/voronoi.c b/src/voronoi.c
index f096a76f5d5417df02404265d8549d5c6e55866a..8d867b54a2d4317f4c427821a098eb91db5c48f9 100644
--- a/src/voronoi.c
+++ b/src/voronoi.c
@@ -13,11 +13,11 @@ circle center(vertexCircle vc) {
 	circle c = circleFrom3Points(vc.a, vc.b, vc.c);
 	return c;
 }
-int reportEdge(edge l, FILE *out) {
+int reportEdge(edge l) {
 	//svgDrawCircle(a,out);
 	//svgDrawCircle(b,out);
 	char *color = "0,0,255";
-	svgDrawLine(l, out, color);
+	svgDrawLine(l, color);
 	return 0;
 }
 
@@ -71,7 +71,7 @@ int outOfBorder(vertex v) {
 	return 0;
 }
 
-void voronoiCws(vertex* S, int size, FILE *out, int draw) {
+void voronoiCws(vertex* S, int size) {
 	for(int i = 0; i < size; i++){
 		int j = firstDelaunayEdgeIncidentTo(i, S, size);
 		int j0 = j;
@@ -82,7 +82,7 @@ void voronoiCws(vertex* S, int size, FILE *out, int draw) {
 		do {
 			int k;
 			int isTriangle;
-			clockwiseNextDelaunayEdge(&i, &j, &k, S, &size, &isTriangle, out);
+			clockwiseNextDelaunayEdge(&i, &j, &k, S, &size, &isTriangle);
 			if(isTriangle == 2) {
 				currentV = vertexCircle2vertex((vertexCircle){S[i], S[j], S[k]});
 				if(first) {
@@ -90,16 +90,14 @@ void voronoiCws(vertex* S, int size, FILE *out, int draw) {
 					firstV = currentV;
 				} else {
 					if(!outOfBorder(currentV)) {
-						if(draw) {
+#ifdef OUTPUTFILE
 							reportEdge((edge){currentV, lastV}, out);
-
-						}
+#endif
 					}
 					if(k == j0) {
-						if(draw) {
-							reportEdge((edge){currentV, firstV}, out);
-
-						}
+#ifdef OUTPUTFILE
+							reportEdge((edge){currentV, firstV});
+#endif
 					}
 				}
 			} else if(isTriangle == 1) {
@@ -111,26 +109,24 @@ void voronoiCws(vertex* S, int size, FILE *out, int draw) {
 					firstV = currentV;
 				} else {
 					if(!outOfBorder(lastV)) {
-						if(draw) {
+#ifdef OUTPUTFILE
 							reportEdge((edge){currentV, lastV}, out);
-
-						}
+#endif
 					}
 				}
 				currentV = findBorderVertex(S[i], S[k]);
 				if(k == j0) {
 					if(!outOfBorder(firstV)) {
-						reportEdge((edge){currentV, firstV}, out);
+						reportEdge((edge){currentV, firstV});
 					}
 				}
 			}
 			lastV = currentV;
 			if(i < j && i < k) {
 				if(isTriangle == 2){
-					vertex tri[3] = {S[i], S[j], S[k]};
-					if(draw){
-						reportTriangle(tri, 3, out);
-					}
+#ifdef OUTPUTFILE
+						reportTriangle(S[i], S[j], S[k]);
+#endif
 				}
 			}
 			j = k;
diff --git a/src/voronoi.h b/src/voronoi.h
index 7f6edb39873794ff29a91cb76acd188df416b32b..4723923699629aa272d0d0b90b7a435b219bb0e4 100644
--- a/src/voronoi.h
+++ b/src/voronoi.h
@@ -50,9 +50,9 @@ edgeCircle clockwiseNextVoronoiEdge(edgeCircle e);
  */
 edgeCircle nextVoronoiEdgeOnBoudary(edgeCircle e);
 
-int reportEdge(edge l, FILE *out);
+int reportEdge(edge l);
 
-void voronoiCws(vertex* S, int size, FILE *out, int draw);
+void voronoiCws(vertex* S, int size);
 
 
 #endif /* SRC_VORONOI_H_ */