diff --git a/src/Surfaces/BaseSurface.h b/src/Surfaces/BaseSurface.h
index 19d090b..e524872 100644
--- a/src/Surfaces/BaseSurface.h
+++ b/src/Surfaces/BaseSurface.h
@@ -16,8 +16,13 @@ class BaseSurface {
 		~BaseSurface();
 		virtual void setup(){}
 		virtual void draw(){}
+	
 		virtual void setVertex(int index, ofVec2f p){}
+		virtual void setVertices(vector<ofVec2f> v){}
+	
 		virtual void setTexCoord(int index, ofVec2f t){}
+		virtual void setTexCoords(vector<ofVec2f> t){}
+	
 		virtual void moveBy(ofVec2f v){}
 		virtual int getType(){}
 		virtual bool hitTest(ofVec2f p){}
diff --git a/src/Surfaces/QuadSurface.cpp b/src/Surfaces/QuadSurface.cpp
index 34055e7..3a9089b 100644
--- a/src/Surfaces/QuadSurface.cpp
+++ b/src/Surfaces/QuadSurface.cpp
@@ -103,6 +103,16 @@ void QuadSurface::setVertex(int index, ofVec2f p){
 	calculate4dTextureCoords();
 }
 
+void QuadSurface::setVertices(vector<ofVec2f> v){
+	if(v.size() != 4){
+		throw runtime_error("Wrong number of vertices");
+	}
+	for(int i = 0; i < 4; ++i){
+		mesh.setVertex(i, v[i]);
+	}
+	calculate4dTextureCoords();
+}
+
 void QuadSurface::setTexCoord(int index, ofVec2f t){
 	if(index > 3){
 		ofLog() << "Texture coordinate with this index does not exist: " << index
@@ -114,6 +124,16 @@ void QuadSurface::setTexCoord(int index, ofVec2f t){
 	calculate4dTextureCoords();
 }
 
+void QuadSurface::setTexCoords(vector<ofVec2f> t){
+	if(t.size() != 4){
+		throw runtime_error("Wrong number of vertices");
+	}
+	for(int i = 0; i < 4; ++i){
+		mesh.setTexCoord(i, t[i]);
+	}
+	calculate4dTextureCoords();
+}
+
 void QuadSurface::moveBy(ofVec2f v){
 	vector <ofVec3f> & vertices = getVertices();
 	for(int i = 0; i < vertices.size(); i++){
diff --git a/src/Surfaces/QuadSurface.h b/src/Surfaces/QuadSurface.h
index b53ac95..07777d4 100644
--- a/src/Surfaces/QuadSurface.h
+++ b/src/Surfaces/QuadSurface.h
@@ -18,8 +18,13 @@ class QuadSurface : public BaseSurface {
 				   ofVec2f t2, ofVec2f t3, ofVec2f t4, BaseSource * newSource);
 
 		void draw();
+	
 		void setVertex(int index, ofVec2f p);
+		void setVertices(vector<ofVec2f> v);
+	
 		void setTexCoord(int index, ofVec2f t);
+		void setTexCoords(vector<ofVec2f> t);
+	
 		void moveBy(ofVec2f v);
 
 		int getType();
diff --git a/src/Surfaces/TriangleSurface.cpp b/src/Surfaces/TriangleSurface.cpp
index 8937948..27e3951 100644
--- a/src/Surfaces/TriangleSurface.cpp
+++ b/src/Surfaces/TriangleSurface.cpp
@@ -62,6 +62,15 @@ void TriangleSurface::setVertex(int index, ofVec2f p){
 	mesh.setVertex(index, p);
 }
 
+void TriangleSurface::setVertices(vector<ofVec2f> v){
+	if(v.size() != 3){
+		throw runtime_error("Wrong number of vertices");
+	}
+	for(int i = 0; i < 3; ++i){
+		mesh.setVertex(i, v[i]);
+	}
+}
+
 void TriangleSurface::setTexCoord(int index, ofVec2f t){
 	if(index > 2){
 		ofLog() << "Texture coordinate with this index does not exist: " << index
@@ -72,6 +81,15 @@ void TriangleSurface::setTexCoord(int index, ofVec2f t){
 	mesh.setTexCoord(index, t);
 }
 
+void TriangleSurface::setTexCoords(vector<ofVec2f> t){
+	if(t.size() != 3){
+		throw runtime_error("Wrong number of texture coordinates");
+	}
+	for(int i = 0; i < 3; ++i){
+		mesh.setTexCoord(i, t[i]);
+	}
+}
+
 void TriangleSurface::moveBy(ofVec2f v){
 	vector <ofVec3f> & vertices = getVertices();
 	for(int i = 0; i < vertices.size(); i++){
diff --git a/src/Surfaces/TriangleSurface.h b/src/Surfaces/TriangleSurface.h
index 9edfcf4..c3d9317 100644
--- a/src/Surfaces/TriangleSurface.h
+++ b/src/Surfaces/TriangleSurface.h
@@ -16,8 +16,13 @@ class TriangleSurface : public BaseSurface {
 		void setup(ofVec2f p1, ofVec2f p2, ofVec2f p3, ofVec2f t1, ofVec2f t2,
 				   ofVec2f t3, BaseSource * newSource);
 		void draw();
+	
 		void setVertex(int index, ofVec2f p);
+		void setVertices(vector<ofVec2f> v);
+	
 		void setTexCoord(int index, ofVec2f t);
+		void setTexCoords(vector<ofVec2f> t);
+	
 		void moveBy(ofVec2f v);
 
 		int getType();