diff --git a/CMakeLists.txt b/CMakeLists.txt
index 373c5f204c1de3dce759b063cb21ce4d91024089..01ff39dbe3f11ba0f5ec07c12f8d79a3b3ed1b19 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,6 +21,7 @@ project(intersection)
 add_executable(
 	tests
 	tests/unit_tests/simple_triangle_tests.cpp
+	tests/unit_tests/contourize_tests.cpp
 	src/intersections/intersections.cpp
 	src/shapes/triangle.cpp
 	src/shapes/triangle_edges.cpp
@@ -29,6 +30,7 @@ add_executable(
 	src/orientation/orientation.cpp
 	src/shapes/point.cpp
 	src/union.cpp
+	src/triangulation/triangulation.cpp
 )
 
 include_directories(src)
diff --git a/src/shapes/triangle.cpp b/src/shapes/triangle.cpp
index 03fb6e277fd64812015c9ddd4ceacdf595a818e5..10229a50976e495b824f04ee961cc9a2e37826cf 100644
--- a/src/shapes/triangle.cpp
+++ b/src/shapes/triangle.cpp
@@ -2,7 +2,7 @@
 #include "triangle_edges.h"
 #include "edge.h"
 
-bool Triangle::neighbours(Triangle &other) {
+bool Triangle::neighbours(const Triangle &other) const {
     return false;
 }
 
diff --git a/src/shapes/triangle.h b/src/shapes/triangle.h
index cdc477cc05c0438f2757927b821458709f8387b1..32b2315f710200844d8b71674dbfde0449568bdb 100644
--- a/src/shapes/triangle.h
+++ b/src/shapes/triangle.h
@@ -5,7 +5,7 @@
 struct Triangle {
 	Point points[3];
 	int depth;
-	bool neighbours(Triangle &other);
-	Triangle(Point p1, Point p2, Point p3, int depth);
+    bool neighbours(const Triangle &other) const;
+    Triangle(Point p1, Point p2, Point p3, int depth);
     bool pointInTriangle(const Point &p) const;
 };
diff --git a/src/triangulation/triangulation.cpp b/src/triangulation/triangulation.cpp
index b924ef8775b79f486df6f94ce2f798b132097265..bbd45b7ac106dade9d3418637f5e72a0996c0b9e 100644
--- a/src/triangulation/triangulation.cpp
+++ b/src/triangulation/triangulation.cpp
@@ -1,5 +1,5 @@
 #include "triangulation.h"
 
-std::vector<Triangle> triangulate(std::vector<Point> &points) {
+std::vector<Triangle> monotoneTriangulate(std::vector<Point> &points) {
     
 }
\ No newline at end of file
diff --git a/src/triangulation/triangulation.h b/src/triangulation/triangulation.h
index efbed9f7a3ac893779710d3276bf7828ec1499dc..30317cb0ed0b6e6b1d7bad0325d3b31afdbbef0b 100644
--- a/src/triangulation/triangulation.h
+++ b/src/triangulation/triangulation.h
@@ -4,4 +4,4 @@
 struct Triangle;
 struct Point;
 
-std::vector<Triangle> triangulate(std::vector<Point> &points);
\ No newline at end of file
+std::vector<Triangle> monotoneTriangulate(std::vector<Point> &points);
\ No newline at end of file
diff --git a/src/union.cpp b/src/union.cpp
index 46a3939438ea0ded9f0e52a0b1ec2947ced8ec97..09d7fb6b5d15c643717b256da4da64186a479ab7 100644
--- a/src/union.cpp
+++ b/src/union.cpp
@@ -4,8 +4,9 @@
 #include <intersections/intersections.h>
 #include <contourize/contourize.h>
 #include <triangulation/triangulation.h>
+#include <union.h>
 
-std::vector<Triangle> unionize(Triangle t1, Triangle t2) {
+std::vector<Triangle> unionize(const Triangle &t1, const Triangle &t2) {
 
 	// if neighbours, do nothing
 	if (t1.neighbours(t2)) {
@@ -22,7 +23,7 @@ std::vector<Triangle> unionize(Triangle t1, Triangle t2) {
 
 	std::vector<Point> contour = contourize(t1, t2, newIntersections);
 
-	return triangulate(contour);
+	return monotoneTriangulate(contour);
 }
 
 void unionize(Triangle soup) {
diff --git a/src/union.h b/src/union.h
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c6bca294f6b9d86e47c24060250b088da177ff59 100644
--- a/src/union.h
+++ b/src/union.h
@@ -0,0 +1,5 @@
+#pragma once
+
+#include <vector>
+
+std::vector<Triangle> unionize(const Triangle &t1, const Triangle &t2);
\ No newline at end of file
diff --git a/tests/union_tests.cpp b/tests/union_tests.cpp
index 79dad85f930153d8ad75b8c29895ee992a9c92f4..b0b131b6f32acbaf68bc65c43ad28d0d317aab79 100644
--- a/tests/union_tests.cpp
+++ b/tests/union_tests.cpp
@@ -1,2 +1,6 @@
 #include "gtest/gtest.h"
+#include <union.h>
 
+TEST (UnionTrivialTests, NotTouching) {
+
+}
\ No newline at end of file
diff --git a/tests/unit_tests/contourize_tests.cpp b/tests/unit_tests/contourize_tests.cpp
index 041a98d90865c26657deae4f927293177da8b7ed..27e318d41095b9147574d4f075a39859315a7a25 100644
--- a/tests/unit_tests/contourize_tests.cpp
+++ b/tests/unit_tests/contourize_tests.cpp
@@ -3,13 +3,13 @@
 #include <intersections/intersections.h>
 
 TEST(ContourizeTest, TwoTriangles) {
-    auto t1 = Triangle(Point(0,0), Point(2,3), Point(5,0), 0);
-    auto t2 = Triangle(Point(3,1), Point(4,3), Point(6,1), 0);
+    auto t1 = Triangle(Point(0,0), Point(5,0),  Point(2,3), 0);
+    auto t2 = Triangle(Point(3,1), Point(6,1), Point(4,3), 0);
 
     auto newIntersections = intersections(t1, t2);
 
     auto contour = contourize(t1, t2, newIntersections);
 
-    //EXPECT_EQ();
+    EXPECT_TRUE(contour.size() > 0);
 
 }
\ No newline at end of file