diff --git a/example/src/ofApp.cpp b/example/src/ofApp.cpp
index 2bd1709..94d13a0 100644
--- a/example/src/ofApp.cpp
+++ b/example/src/ofApp.cpp
@@ -6,7 +6,10 @@ void ofApp::setup()
     bShowInfo = false;
     
     surfaceManager.addSurface();
-    surfaceManager.addSurface();
+    surfaceManager.addSurface( &image.getTextureReference() );
+    surfaceManager.addSurface(ofVec2f(10,10), ofVec2f(300, 20), ofVec2f(200, 300),
+                              ofVec2f(0.1f, 0.1f), ofVec2f(0.5f, 0.2f), ofVec2f(0.4f, 0.9f),
+                              &image.getTextureReference());
 }
 
 void ofApp::update()
diff --git a/src/ofxBaseSurface.cpp b/src/ofxBaseSurface.cpp
index 42a5cbe..00768a6 100644
--- a/src/ofxBaseSurface.cpp
+++ b/src/ofxBaseSurface.cpp
@@ -38,7 +38,7 @@ void ofxBaseSurface::createDefaultTexture()
     texture = &defaultTexture;
 }
 
-void  ofxBaseSurface::drawTexture(ofVec2f position)
+void ofxBaseSurface::drawTexture(ofVec2f position)
 {
     ofMesh texMesh;
     texMesh.addVertex(position);
@@ -56,6 +56,11 @@ void  ofxBaseSurface::drawTexture(ofVec2f position)
     texture->unbind();
 }
 
+void ofxBaseSurface::setTexture(ofTexture *texturePtr)
+{
+    texture = texturePtr;
+}
+
 ofTexture* ofxBaseSurface::getTexture()
 {
     return texture;
diff --git a/src/ofxBaseSurface.h b/src/ofxBaseSurface.h
index 2fd60d6..3d6124f 100644
--- a/src/ofxBaseSurface.h
+++ b/src/ofxBaseSurface.h
@@ -14,6 +14,7 @@ public:
     
     // Draws a texture using ofMesh
     void drawTexture(ofVec2f position);
+    void setTexture(ofTexture* texturePtr);
     
     ofTexture* getTexture();
     
diff --git a/src/ofxSurfaceManager.cpp b/src/ofxSurfaceManager.cpp
index ad253f6..c56f2ec 100644
--- a/src/ofxSurfaceManager.cpp
+++ b/src/ofxSurfaceManager.cpp
@@ -109,6 +109,23 @@ void ofxSurfaceManager::addSurface()
     addTriangleSurface();
 }
 
+void ofxSurfaceManager::addSurface(ofTexture* texturePtr)
+{
+    addTriangleSurface(texturePtr);
+}
+
+void ofxSurfaceManager::addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3)
+{
+    addTriangleSurface(v1, v2, v3, t1, t2, t3);
+}
+
+void ofxSurfaceManager::addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3,
+                                   ofVec2f t1, ofVec2f t2, ofVec2f t3,
+                                   ofTexture *texturePtr)
+{
+    addTriangleSurface(v1, v2, v3, t1, t2, t3, texturePtr);
+}
+
 void ofxSurfaceManager::removeSurface(int index)
 {
     if ( index >= surfaceGuis.size() ) {
@@ -157,6 +174,18 @@ void ofxSurfaceManager::addTriangleSurface()
     surfaceGuis.back()->setup( *triangleSurfaces.back() );
 }
 
+void ofxSurfaceManager::addTriangleSurface(ofTexture* texturePtr)
+{
+    addTriangleSurface();
+    triangleSurfaces.back()->setTexture(texturePtr);
+}
+
+void ofxSurfaceManager::addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3)
+{
+    addTriangleSurface();
+    triangleSurfaces.back()->setup(v1, v2, v3, t1, t2, t3, triangleSurfaces.back()->getTexture());
+}
+
 void ofxSurfaceManager::addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr)
 {
     addTriangleSurface();
diff --git a/src/ofxSurfaceManager.h b/src/ofxSurfaceManager.h
index 9055c48..1ebdbde 100644
--- a/src/ofxSurfaceManager.h
+++ b/src/ofxSurfaceManager.h
@@ -20,6 +20,10 @@ public:
     void mouseDragged(int x, int y, int button);
     
     void addSurface();
+    void addSurface(ofTexture* texturePtr);
+    void addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3);
+    void addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr);
+    
     void removeSurface(int index);
     void setGuiMode(ofxSurfaceGui::editMode);
     void selectSurface(int index);
@@ -31,6 +35,8 @@ private:
     deque<ofxSurfaceGui*> surfaceGuis;
     
     void addTriangleSurface();
+    void addTriangleSurface(ofTexture* texturePtr);
+    void addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3);
     void addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr);
 };