diff --git a/src/qgsmapcanvas.cpp b/src/qgsmapcanvas.cpp
index 79a6c9ed80f..786331b0384 100644
--- a/src/qgsmapcanvas.cpp
+++ b/src/qgsmapcanvas.cpp
@@ -33,6 +33,7 @@
 #include "qgspolygonsymbol.h"
 #include "qgslinesymbol.h"
 #include "qgsmapcanvas.h"
+#include "qgsmaplayerinterface.h"
 
 QgsMapCanvas::QgsMapCanvas(QWidget * parent, const char *name)
 :QWidget(parent, name)
@@ -61,6 +62,10 @@ void QgsMapCanvas::setLegend(QgsLegend * legend)
 void QgsMapCanvas::setDirty(bool _dirty){
 	dirty = _dirty;
 }
+void QgsMapCanvas::addLayer(QgsMapLayerInterface * lyr){
+	// add a maplayer interface to a layer type defined in a plugin
+	
+}	
 void QgsMapCanvas::addLayer(QgsMapLayer * lyr)
 {
 // give the layer a default symbol
diff --git a/src/qgsmapcanvas.h b/src/qgsmapcanvas.h
index 29bf868b6fc..3017647cb30 100644
--- a/src/qgsmapcanvas.h
+++ b/src/qgsmapcanvas.h
@@ -28,6 +28,7 @@
 class QRect;
 class QgsCoordinateTransform;
 class QgsMapLayer;
+class QgsMapLayerInterface;
 class QMouseEvent;
 class QgsLegend;
 class QColor;
@@ -50,6 +51,7 @@ public:
      * @param lyr Pointer to a layer derived from QgsMapLayer
      */
     void addLayer(QgsMapLayer *lyr);
+    void addLayer(QgsMapLayerInterface *lyr);
     /*! Draw the map using the symbology set for each layer
      */
     void render();
diff --git a/src/qgsmaplayerinterface.h b/src/qgsmaplayerinterface.h
index 945f086ffba..518465ea938 100644
--- a/src/qgsmaplayerinterface.h
+++ b/src/qgsmaplayerinterface.h
@@ -28,7 +28,10 @@ virtual void setQgisMainWindow(QMainWindow *qgis) = 0;
 virtual int getInt()=0;
 // setup the plugin's GUI
 virtual void initGui()=0;
+// unload the plugin
 virtual void unload()=0;
+// draw function
+virtual void draw() = 0;
 
 };
 #endif // QGSMAPLAYERINTERFACE_H