diff --git a/src/qtcanvas3d.qmltypes b/src/plugins.qmltypes
similarity index 93%
rename from src/qtcanvas3d.qmltypes
rename to src/plugins.qmltypes
index 675d23da2058bb34f5ba4c33a4dfb7fc6cde2757..152f81e7b8ef3df0b8df8c7f7d858781a3a9cdd9 100644
--- a/src/qtcanvas3d.qmltypes
+++ b/src/plugins.qmltypes
@@ -4,14 +4,14 @@ import QtQuick.tooling 1.1
 // It is used for QML tooling purposes only.
 //
 // This file was auto-generated by:
-// 'qmlplugindump QtCanvas3D 1.0 src'
+// 'qmlplugindump.exe -nonrelocatable QtCanvas3D 1.0'
 
 Module {
     Component {
         name: "Canvas"
         defaultProperty: "data"
         prototype: "QQuickItem"
-        exports: ["Canvas3D 1.0"]
+        exports: ["QtCanvas3D/Canvas3D 1.0"]
         exportMetaObjectRevisions: [0]
         Property { name: "context"; type: "CanvasContext"; isReadonly: true; isPointer: true }
         Property { name: "animated"; type: "bool" }
@@ -44,7 +44,8 @@ Module {
             name: "contextChanged"
             Parameter { name: "context"; type: "CanvasContext"; isPointer: true }
         }
-        Signal { name: "initGLCalled" }
+        Signal { name: "initGL" }
+        Signal { name: "renderGL" }
         Signal {
             name: "textureReady"
             Parameter { name: "id"; type: "int" }
@@ -75,10 +76,32 @@ Module {
             Parameter { name: "name"; type: "string" }
         }
     }
+    Component {
+        name: "CanvasActiveInfo"
+        prototype: "QObject"
+        exports: ["QtCanvas3D/ActiveInfo3D 1.0"]
+        isCreatable: false
+        exportMetaObjectRevisions: [0]
+        Property { name: "size"; type: "int"; isReadonly: true }
+        Property { name: "type"; type: "CanvasContext::glEnums"; isReadonly: true }
+        Property { name: "name"; type: "string"; isReadonly: true }
+        Signal {
+            name: "sizeChanged"
+            Parameter { name: "size"; type: "int" }
+        }
+        Signal {
+            name: "typeChanged"
+            Parameter { name: "type"; type: "CanvasContext::glEnums" }
+        }
+        Signal {
+            name: "nameChanged"
+            Parameter { name: "name"; type: "QString&" }
+        }
+    }
     Component {
         name: "CanvasArrayBuffer"
         prototype: "QObject"
-        exports: ["ArrayBuffer 1.0"]
+        exports: ["QtCanvas3D/ArrayBuffer 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Property { name: "byteLength"; type: "ulong"; isReadonly: true }
@@ -106,7 +129,7 @@ Module {
     Component {
         name: "CanvasArrayBufferView"
         prototype: "CanvasAbstractObject"
-        exports: ["ArrayBufferView 1.0"]
+        exports: ["QtCanvas3D/ArrayBufferView 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Property { name: "buffer"; type: "CanvasArrayBuffer"; isReadonly: true; isPointer: true }
@@ -128,14 +151,14 @@ Module {
     Component {
         name: "CanvasBuffer"
         prototype: "CanvasAbstractObject"
-        exports: ["Buffer3D 1.0"]
+        exports: ["QtCanvas3D/Buffer3D 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
     }
     Component {
         name: "CanvasContext"
         prototype: "QObject"
-        exports: ["Context3D 1.0"]
+        exports: ["QtCanvas3D/Context3D 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Enum {
@@ -443,6 +466,8 @@ Module {
             }
         }
         Property { name: "canvas"; type: "Canvas"; isReadonly: true; isPointer: true }
+        Property { name: "drawingBufferWidth"; type: "uint"; isReadonly: true }
+        Property { name: "drawingBufferHeight"; type: "uint"; isReadonly: true }
         Property { name: "logAllCalls"; type: "bool" }
         Property { name: "logAllErrors"; type: "bool" }
         Property { name: "DEPTH_BUFFER_BIT"; type: "CanvasContext::glEnums"; isReadonly: true }
@@ -1603,11 +1628,120 @@ Module {
             Parameter { name: "type"; type: "glEnums" }
             Parameter { name: "pixels"; type: "CanvasArrayBufferView"; isPointer: true }
         }
+        Method {
+            name: "getActiveAttrib"
+            type: "CanvasActiveInfo*"
+            Parameter { name: "program"; type: "CanvasProgram"; isPointer: true }
+            Parameter { name: "index"; type: "uint" }
+        }
+        Method {
+            name: "getActiveUniform"
+            type: "CanvasActiveInfo*"
+            Parameter { name: "program"; type: "CanvasProgram"; isPointer: true }
+            Parameter { name: "index"; type: "uint" }
+        }
+        Method {
+            name: "getAttachedShaders"
+            type: "QVariantList"
+            Parameter { name: "program"; type: "CanvasProgram"; isPointer: true }
+        }
+        Method {
+            name: "stencilFunc"
+            Parameter { name: "func"; type: "glEnums" }
+            Parameter { name: "ref"; type: "int" }
+            Parameter { name: "mask"; type: "uint" }
+        }
+        Method {
+            name: "stencilFuncSeparate"
+            Parameter { name: "face"; type: "glEnums" }
+            Parameter { name: "func"; type: "glEnums" }
+            Parameter { name: "ref"; type: "int" }
+            Parameter { name: "mask"; type: "uint" }
+        }
+        Method {
+            name: "stencilMask"
+            Parameter { name: "mask"; type: "uint" }
+        }
+        Method {
+            name: "stencilMaskSeparate"
+            Parameter { name: "face"; type: "glEnums" }
+            Parameter { name: "mask"; type: "uint" }
+        }
+        Method {
+            name: "stencilOp"
+            Parameter { name: "fail"; type: "glEnums" }
+            Parameter { name: "zfail"; type: "glEnums" }
+            Parameter { name: "zpass"; type: "glEnums" }
+        }
+        Method {
+            name: "stencilOpSeparate"
+            Parameter { name: "face"; type: "glEnums" }
+            Parameter { name: "fail"; type: "glEnums" }
+            Parameter { name: "zfail"; type: "glEnums" }
+            Parameter { name: "zpass"; type: "glEnums" }
+        }
+        Method {
+            name: "vertexAttrib1fva"
+            Parameter { name: "indx"; type: "uint" }
+            Parameter { name: "values"; type: "QVariantList" }
+        }
+        Method {
+            name: "vertexAttrib2fva"
+            Parameter { name: "indx"; type: "uint" }
+            Parameter { name: "values"; type: "QVariantList" }
+        }
+        Method {
+            name: "vertexAttrib3fva"
+            Parameter { name: "indx"; type: "uint" }
+            Parameter { name: "values"; type: "QVariantList" }
+        }
+        Method {
+            name: "vertexAttrib4fva"
+            Parameter { name: "indx"; type: "uint" }
+            Parameter { name: "values"; type: "QVariantList" }
+        }
+        Method {
+            name: "getFramebufferAttachmentParameter"
+            type: "int"
+            Parameter { name: "target"; type: "glEnums" }
+            Parameter { name: "attachment"; type: "glEnums" }
+            Parameter { name: "pname"; type: "glEnums" }
+        }
+        Method {
+            name: "getRenderbufferParameter"
+            type: "int"
+            Parameter { name: "target"; type: "glEnums" }
+            Parameter { name: "pname"; type: "glEnums" }
+        }
+        Method {
+            name: "getTexParameter"
+            type: "QVariant"
+            Parameter { name: "target"; type: "glEnums" }
+            Parameter { name: "pname"; type: "glEnums" }
+        }
+        Method {
+            name: "getUniform"
+            type: "QVariant"
+            Parameter { name: "program"; type: "CanvasProgram"; isPointer: true }
+            Parameter { name: "location"; type: "CanvasUniformLocation"; isPointer: true }
+        }
+        Method {
+            name: "getVertexAttribOffset"
+            type: "uint"
+            Parameter { name: "index"; type: "uint" }
+            Parameter { name: "pname"; type: "glEnums" }
+        }
+        Method {
+            name: "getVertexAttrib"
+            type: "QVariant"
+            Parameter { name: "index"; type: "uint" }
+            Parameter { name: "pname"; type: "glEnums" }
+        }
     }
     Component {
         name: "CanvasContextAttributes"
         prototype: "QObject"
-        exports: ["ContextAttributes 1.0"]
+        exports: ["QtCanvas3D/ContextAttributes 1.0"]
         exportMetaObjectRevisions: [0]
         Property { name: "alpha"; type: "bool" }
         Property { name: "depth"; type: "bool" }
@@ -1653,7 +1787,7 @@ Module {
     Component {
         name: "CanvasFloat32Array"
         prototype: "CanvasTypedArray"
-        exports: ["Float32Array 1.0"]
+        exports: ["QtCanvas3D/Float32Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -1688,7 +1822,7 @@ Module {
     Component {
         name: "CanvasFloat64Array"
         prototype: "CanvasTypedArray"
-        exports: ["Float64Array 1.0"]
+        exports: ["QtCanvas3D/Float64Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -1705,14 +1839,14 @@ Module {
     Component {
         name: "CanvasFrameBuffer"
         prototype: "CanvasAbstractObject"
-        exports: ["FrameBuffer3D 1.0"]
+        exports: ["QtCanvas3D/FrameBuffer3D 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
     }
     Component {
         name: "CanvasInt16Array"
         prototype: "CanvasTypedArray"
-        exports: ["Int16Array 1.0"]
+        exports: ["QtCanvas3D/Int16Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -1729,7 +1863,7 @@ Module {
     Component {
         name: "CanvasInt32Array"
         prototype: "CanvasTypedArray"
-        exports: ["Int32Array 1.0"]
+        exports: ["QtCanvas3D/Int32Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -1746,7 +1880,7 @@ Module {
     Component {
         name: "CanvasInt8Array"
         prototype: "CanvasTypedArray"
-        exports: ["Int8Array 1.0"]
+        exports: ["QtCanvas3D/Int8Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -1763,7 +1897,7 @@ Module {
     Component {
         name: "CanvasProgram"
         prototype: "CanvasAbstractObject"
-        exports: ["Program3D 1.0"]
+        exports: ["QtCanvas3D/Program3D 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Property { name: "id"; type: "int"; isReadonly: true }
@@ -1775,21 +1909,21 @@ Module {
     Component {
         name: "CanvasRenderBuffer"
         prototype: "QObject"
-        exports: ["RenderBuffer3D 1.0"]
+        exports: ["QtCanvas3D/RenderBuffer3D 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
     }
     Component {
         name: "CanvasShader"
         prototype: "QObject"
-        exports: ["Shader3D 1.0"]
+        exports: ["QtCanvas3D/Shader3D 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
     }
     Component {
         name: "CanvasShaderPrecisionFormat"
         prototype: "QObject"
-        exports: ["ShaderPrecisionFormat 1.0"]
+        exports: ["QtCanvas3D/ShaderPrecisionFormat 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Property { name: "rangeMin"; type: "int"; isReadonly: true }
@@ -1811,14 +1945,14 @@ Module {
     Component {
         name: "CanvasTexture"
         prototype: "CanvasAbstractObject"
-        exports: ["Texture3D 1.0"]
+        exports: ["QtCanvas3D/Texture3D 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
     }
     Component {
         name: "CanvasTextureImage"
         prototype: "CanvasAbstractObject"
-        exports: ["TextureImage 1.0"]
+        exports: ["QtCanvas3D/TextureImage 1.0"]
         exportMetaObjectRevisions: [0]
         Enum {
             name: "TextureImageState"
@@ -1864,10 +1998,13 @@ Module {
     Component {
         name: "CanvasTextureImageLoader"
         prototype: "QObject"
-        exports: ["TextureImageLoader 1.0"]
+        exports: ["QtCanvas3D/TextureImageLoader 1.0"]
         exportMetaObjectRevisions: [0]
+        Property { name: "image"; type: "CanvasTextureImage"; isReadonly: true; isPointer: true }
         Property { name: "logAllCalls"; type: "bool" }
         Property { name: "logAllErrors"; type: "bool" }
+        Signal { name: "imageLoaded" }
+        Signal { name: "imageLoadingFailed" }
         Signal {
             name: "logAllCallsChanged"
             Parameter { name: "logCalls"; type: "bool" }
@@ -1885,7 +2022,7 @@ Module {
     Component {
         name: "CanvasTypedArray"
         prototype: "CanvasArrayBufferView"
-        exports: ["TypedArray 1.0"]
+        exports: ["QtCanvas3D/TypedArray 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Property { name: "length"; type: "ulong"; isReadonly: true }
@@ -1897,7 +2034,7 @@ Module {
     Component {
         name: "CanvasTypedArrayFactory"
         prototype: "QObject"
-        exports: ["Arrays 1.0"]
+        exports: ["QtCanvas3D/Arrays 1.0"]
         isCreatable: false
         isSingleton: true
         exportMetaObjectRevisions: [0]
@@ -2095,7 +2232,7 @@ Module {
     Component {
         name: "CanvasUint16Array"
         prototype: "CanvasTypedArray"
-        exports: ["Uint16Array 1.0"]
+        exports: ["QtCanvas3D/Uint16Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -2112,7 +2249,7 @@ Module {
     Component {
         name: "CanvasUint32Array"
         prototype: "CanvasTypedArray"
-        exports: ["Uint32Array 1.0"]
+        exports: ["QtCanvas3D/Uint32Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -2129,7 +2266,7 @@ Module {
     Component {
         name: "CanvasUint8Array"
         prototype: "CanvasTypedArray"
-        exports: ["Uint8Array 1.0"]
+        exports: ["QtCanvas3D/Uint8Array 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -2146,7 +2283,7 @@ Module {
     Component {
         name: "CanvasUint8ClampedArray"
         prototype: "CanvasTypedArray"
-        exports: ["Uint8ClampedArray 1.0"]
+        exports: ["QtCanvas3D/Uint8ClampedArray 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
         Method {
@@ -2163,7 +2300,7 @@ Module {
     Component {
         name: "CanvasUniformLocation"
         prototype: "CanvasAbstractObject"
-        exports: ["UniformLocation 1.0"]
+        exports: ["QtCanvas3D/UniformLocation 1.0"]
         isCreatable: false
         exportMetaObjectRevisions: [0]
     }
diff --git a/src/qmldir b/src/qmldir
index 6d4db1f8365d5c42dcdee983b08d06a479aaeea2..7ae1442e3b738d6a8c09ee683ffe04a14b88e8cf 100644
--- a/src/qmldir
+++ b/src/qmldir
@@ -1,5 +1,5 @@
 module QtCanvas3D
 plugin qtcanvas3d
 classname QtCanvas3DPlugin
-typeinfo qtcanvas3d.qmltypes
+typeinfo plugins.qmltypes
 
diff --git a/src/src.pro b/src/src.pro
index b93e42fc795f6dffc099a9750296ea47255b4d8a..33a86d70839cfd643a50b633a22b6bd7c0b16e97 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -86,7 +86,7 @@ OTHER_FILES = qmldir \
     doc/src/* \
     doc/images/* \
     doc/snippets/* \
-    qtcanvas3d.qmltypes
+    plugins.qmltypes
 
 CONFIG += no_cxx_module