Adding copy ops.
diff --git a/.gitignore b/.gitignore
index b45a037..308d85e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 Build
+/.DS_Store
diff --git a/Makefile b/Makefile
index 75c78a6..e59d693 100644
--- a/Makefile
+++ b/Makefile
@@ -23,13 +23,13 @@
 	$(foreach header,$(HEADERS),$(shell mkdir -p $(INCLUDE_DIR)/$(dir $(subst Source/,,$(header))) && cp $(header) $(INCLUDE_DIR)/$(subst Source/,,$(header))))
 
 clean:
-	$(RM) -fR $(BUILD_DIR)
+	@$(RM) -fR $(BUILD_DIR)
 
 dirs:
-	mkdir -p $(OBJ_DIR)
-	mkdir -p $(LIB_DIR)
-	mkdir -p $(INCLUDE_DIR)
-	$(foreach folder,$(CPP_FOLDERS),$(shell mkdir -p $(folder)))
+	@mkdir -p $(OBJ_DIR)
+	@mkdir -p $(LIB_DIR)
+	@mkdir -p $(INCLUDE_DIR)
+	@$(foreach folder,$(CPP_FOLDERS),$(shell mkdir -p $(folder)))
 	
 install:
 	cp -r Build/include/ /usr/local/include
@@ -37,8 +37,8 @@
 
 # Build sources
 $(OUTPUTFILE): $(CPP_OBJECTS)
-	ar ru $(LIB_DIR)/$@ $^
-	ranlib $(LIB_DIR)/$@
+	@ar ru $(LIB_DIR)/$@ $^
+	@ranlib $(LIB_DIR)/$@
 
 $(OBJ_DIR)/%.o: %.cpp
 	$(CPP_COMPILER) $(CPP_FLAGS) $(DEFINES) -c $< -o $@
\ No newline at end of file
diff --git a/Source/Mat2D.cpp b/Source/Mat2D.cpp
index a9b34a1..765c803 100644
--- a/Source/Mat2D.cpp
+++ b/Source/Mat2D.cpp
@@ -66,4 +66,14 @@
 	result[4] = (ac * aty - ad * atx) * det;
 	result[5] = (ab * atx - aa * aty) * det;
 	return true;
-}
\ No newline at end of file
+}
+
+void Mat2D::copy(Mat2D& result, const Mat2D& a)
+{
+	result[0] = a[0];
+	result[1] = a[1];
+	result[2] = a[2];
+	result[3] = a[3];
+	result[4] = a[4];
+	result[5] = a[5];
+}
diff --git a/Source/Mat2D.hpp b/Source/Mat2D.hpp
index dbd62ec..1212ceb 100644
--- a/Source/Mat2D.hpp
+++ b/Source/Mat2D.hpp
@@ -22,6 +22,7 @@
 			static void scale(Mat2D& result, const Mat2D& mat, const Vec2D& vec);
 			static void multiply(Mat2D& result, const Mat2D& a, const Mat2D& b);
 			static bool invert(Mat2D& result, const Mat2D& a);
+			static void copy(Mat2D& result, const Mat2D& a);
 	};
 }
 #endif
\ No newline at end of file
diff --git a/Source/Vec2D.cpp b/Source/Vec2D.cpp
index dfb25c9..fafd5d4 100644
--- a/Source/Vec2D.cpp
+++ b/Source/Vec2D.cpp
@@ -9,6 +9,11 @@
 
 }
 
+Vec2D::Vec2D(float x, float y) : m_Buffer{x, y}
+{
+
+}
+
 Vec2D::Vec2D(const Vec2D& copy) : m_Buffer{copy.m_Buffer[0], copy.m_Buffer[1]}
 {
 
@@ -33,4 +38,10 @@
 	float x = a[0];
 	float y = a[1];
 	return sqrt(x*x + y*y);
+}
+
+void Vec2D::copy(Vec2D& result, const Vec2D& a)
+{
+	result[0] = a[0];
+	result[1] = a[1];
 }
\ No newline at end of file
diff --git a/Source/Vec2D.hpp b/Source/Vec2D.hpp
index 2c9824f..a2a5fad 100644
--- a/Source/Vec2D.hpp
+++ b/Source/Vec2D.hpp
@@ -13,6 +13,7 @@
 		public:
 			Vec2D();
 			Vec2D(const Vec2D& copy);
+			Vec2D(float x, float y);
 
 			float& operator[](std::size_t idx) { return m_Buffer[idx]; }
 			const float& operator[](std::size_t idx) const { return m_Buffer[idx]; }
@@ -20,6 +21,7 @@
 			static void transform(Vec2D& result, const Vec2D& a, const Mat2D& m);
 			static void subtract(Vec2D& result, const Vec2D& a, const Vec2D& b);
 			static float length(const Vec2D& a);
+			static void copy(Vec2D& result, const Vec2D& a);
 	};
 }
 #endif
\ No newline at end of file