diff --git a/README b/README
index 87fe6bc85d7828ca14ebd7ac8d4956af7548c6c8..2b3e7d53b3caef1b2a33479142330964d4c975ca 100644
--- a/README
+++ b/README
@@ -79,3 +79,18 @@ Known Issues
   on Windows in certain circumstances (try JSON Models Example for reference).
 - Resizing window works incorrectly if viewport is updated during rendering to match
   the window size (try Framebuffer Example for reference).
+- These methods are named for Tech Preview with “a” postfix to denote “array” versions taking a JavaScript array instead of TypedArray.
+  This is to resolve method overloading problems with the current QObject based TypedArray implementation and will be rectified before final release:
+    void uniform1fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform2fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform3fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform4fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform1iva(CanvasUniformLocation *location, QVariantList array)
+    void uniform2iva(CanvasUniformLocation *location, QVariantList array)
+    void uniform3iva(CanvasUniformLocation *location, QVariantList array)
+    void uniform4iva(CanvasUniformLocation *location, QVariantList array)
+    void vertexAttrib1fva(uint indx, QVariantList values)
+    void vertexAttrib2fva(uint indx, QVariantList values)
+    void vertexAttrib3fva(uint indx, QVariantList values)
+    void vertexAttrib4fva(uint indx, QVariantList values)
+
diff --git a/src/arrayutils_p.h b/src/arrayutils_p.h
index d035866beb9cc8513ebc5fd654bf9092e40bc647..d15ce0c4b653dd2b15b03d74ed800fc0e89ecc66 100644
--- a/src/arrayutils_p.h
+++ b/src/arrayutils_p.h
@@ -47,16 +47,16 @@
 #ifndef ARRAYUTILS_P_H
 #define ARRAYUTILS_P_H
 
-#include "typedarray_p.h"
-#include "int8array_p.h"
-#include "uint8array_p.h"
-#include "int16array_p.h"
-#include "uint16array_p.h"
-#include "int32array_p.h"
-#include "uint32array_p.h"
-#include "float32array_p.h"
-#include "float64array_p.h"
-#include "uint8clampedarray_p.h"
+#include "typedarray/typedarray_p.h"
+#include "typedarray/int8array_p.h"
+#include "typedarray/uint8array_p.h"
+#include "typedarray/int16array_p.h"
+#include "typedarray/uint16array_p.h"
+#include "typedarray/int32array_p.h"
+#include "typedarray/uint32array_p.h"
+#include "typedarray/float32array_p.h"
+#include "typedarray/float64array_p.h"
+#include "typedarray/uint8clampedarray_p.h"
 
 // Contains static template functions used by the TypedArray classes.
 class ArrayUtils
diff --git a/src/buffer3d.cpp b/src/buffer3d.cpp
index 2d0e2d9390b6f299aa95e473a96f667d2771c402..7f18ece814d0889623b023158b62e18bd138f91f 100644
--- a/src/buffer3d.cpp
+++ b/src/buffer3d.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "buffer3d_p.h"
-#include "typedarray_p.h"
+#include "typedarray/typedarray_p.h"
 
 #include <QDebug>
 #include <QString>
diff --git a/src/canvas3d.cpp b/src/canvas3d.cpp
index f03d122ff5c4b00c1af6225969cf803fc1980f1e..1d97655a6613b121e53ec91ccd13e5451165a50c 100644
--- a/src/canvas3d.cpp
+++ b/src/canvas3d.cpp
@@ -36,13 +36,14 @@
 
 #include "canvas3d_p.h"
 #include "context3d_p.h"
-#include "typedarray_p.h"
-#include "uint32array_p.h"
-#include "arraybuffer_p.h"
 #include "canvas3dcommon_p.h"
 #include "canvasrendernode_p.h"
 #include "teximage3d_p.h"
 
+#include "typedarray/typedarray_p.h"
+#include "typedarray/uint32array_p.h"
+#include "typedarray/arraybuffer_p.h"
+
 #include <QtGui/QGuiApplication>
 #include <QtGui/QOffscreenSurface>
 #include <QtGui/QOpenGLContext>
@@ -50,10 +51,6 @@
 #include <QtQml/QQmlEngine>
 #include <QtQml/QQmlContext>
 
-static QList<const QQuickWindow *> staticClearList;
-static QHash<Canvas *, QQuickWindow *> canvasWindowList;
-static QHash<QQuickWindow *, bool> windowClearList;
-
 /*!
  * \qmltype Canvas3D
  * \since QtCanvas3D 1.0
@@ -97,7 +94,8 @@ Canvas::Canvas(QQuickItem *parent):
     m_isContextAttribsSet(false),
     m_antialiasFbo(0),
     m_renderFbo(0),
-    m_displayFbo(0)
+    m_displayFbo(0),
+    m_offscreenSurface(0)
 {
     if (m_logAllCalls) qDebug() << "Canvas3D::" << __FUNCTION__;
     connect(this, &QQuickItem::windowChanged, this, &Canvas::handleWindowChanged);
@@ -236,6 +234,7 @@ float Canvas::devicePixelRatio()
         return 1.0f;
 }
 
+
 /*!
  * \qmlmethod Context3D Canvas3D::getContext(string type)
  * Returns the 3D rendering context that allows 3D rendering calls to be made.
diff --git a/src/context3d.cpp b/src/context3d.cpp
index 201865637a63979c423c0a6cfd16be4adcdee7c7..5fe078cda2fce9a37128100f6bd59302f1635328 100644
--- a/src/context3d.cpp
+++ b/src/context3d.cpp
@@ -45,15 +45,6 @@
 #include "framebuffer3d_p.h"
 #include "renderbuffer3d_p.h"
 #include "uniformlocation_p.h"
-#include "arraybuffer_p.h"
-#include "int8array_p.h"
-#include "uint8array_p.h"
-#include "int16array_p.h"
-#include "uint16array_p.h"
-#include "int32array_p.h"
-#include "uint32array_p.h"
-#include "float32array_p.h"
-#include "float64array_p.h"
 #include "teximage3d_p.h"
 #include "arrayutils_p.h"
 #include "shaderprecisionformat_p.h"
@@ -61,6 +52,16 @@
 #include "canvas3dcommon_p.h"
 #include "contextextensions_p.h"
 
+#include "typedarray/arraybuffer_p.h"
+#include "typedarray/int8array_p.h"
+#include "typedarray/uint8array_p.h"
+#include "typedarray/int16array_p.h"
+#include "typedarray/uint16array_p.h"
+#include "typedarray/int32array_p.h"
+#include "typedarray/uint32array_p.h"
+#include "typedarray/float32array_p.h"
+#include "typedarray/float64array_p.h"
+
 #include <QtGui/QOpenGLShader>
 
 /*!
diff --git a/src/doc/src/qtcanvas3d.qdoc b/src/doc/src/qtcanvas3d.qdoc
index f674a0cbaa2ae70ebeb7edecd32d850e86ae8fcd..f78cb95f0867ccf5214539a528f8f9c33e97df11 100644
--- a/src/doc/src/qtcanvas3d.qdoc
+++ b/src/doc/src/qtcanvas3d.qdoc
@@ -174,5 +174,22 @@
             on Windows in certain circumstances (try \l{JSON Models Example} for reference).
         \li Resizing window works incorrectly if viewport is updated during rendering to match
             the window size (try \l{Framebuffer Example} for reference).
+        \li These methods are named for Tech Preview with “a” postfix to denote “array” versions taking a JavaScript array instead of TypedArray.
+            This is to resolve method overloading problems with the current QObject based TypedArray implementation and will be rectified before final release:
+   \code
+    void uniform1fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform2fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform3fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform4fva(CanvasUniformLocation *location, QVariantList array)
+    void uniform1iva(CanvasUniformLocation *location, QVariantList array)
+    void uniform2iva(CanvasUniformLocation *location, QVariantList array)
+    void uniform3iva(CanvasUniformLocation *location, QVariantList array)
+    void uniform4iva(CanvasUniformLocation *location, QVariantList array)
+    void vertexAttrib1fva(uint indx, QVariantList values)
+    void vertexAttrib2fva(uint indx, QVariantList values)
+    void vertexAttrib3fva(uint indx, QVariantList values)
+    void vertexAttrib4fva(uint indx, QVariantList values)
+    \endcode
+
     \endlist
 */
diff --git a/src/qcanvas3d_plugin.cpp b/src/qcanvas3d_plugin.cpp
index 56d79b1ca423b6045472a2edf7ddfb73c1415d21..c0977ba54ff01947f59550fbd990e09ac8544dfb 100644
--- a/src/qcanvas3d_plugin.cpp
+++ b/src/qcanvas3d_plugin.cpp
@@ -41,10 +41,8 @@
 void QtCanvas3DPlugin::registerTypes(const char *uri)
 {
     // @uri com.digia.qtcanvas3d
-    qmlRegisterSingletonType<CanvasTypedArrayFactory>(uri,
-                                                      1, 0,
-                                                      "Arrays",
-                                                      CanvasTypedArrayFactory::type_array_factory_provider);
+
+    // QTCANVAS3D CORE API
     qmlRegisterSingletonType<CanvasTextureImageFactory>(uri,
                                                         1, 0,
                                                         "TextureImageFactory",
@@ -59,47 +57,6 @@ void QtCanvas3DPlugin::registerTypes(const char *uri)
     qmlRegisterType<CanvasContextAttributes>(uri,
                                              1, 0,
                                              "ContextAttributes");
-
-    qmlRegisterUncreatableType<CanvasArrayBuffer>(uri,
-                                                  1, 0,
-                                                  "ArrayBuffer",
-                                                  QLatin1String("Trying to create uncreatable: ArrayBuffer."));
-    qmlRegisterUncreatableType<CanvasInt8Array>(uri,
-                                                1, 0,
-                                                "Int8Array",
-                                                QLatin1String("Trying to create uncreatable: Int8Array, use Arrays.newInt8Array() instead."));
-    qmlRegisterUncreatableType<CanvasUint8Array>(uri,
-                                                 1, 0,
-                                                 "Uint8Array",
-                                                 QLatin1String("Trying to create uncreatable: Uint8Array, use Arrays.newUint8Array() instead."));
-    qmlRegisterUncreatableType<CanvasUint8ClampedArray>(uri,
-                                                        1, 0,
-                                                        "Uint8ClampedArray",
-                                                        QLatin1String("Trying to create uncreatable: Uint8ClampedArray, use Arrays.newUint8ClampedArray() instead."));
-    qmlRegisterUncreatableType<CanvasInt16Array>(uri,
-                                                 1, 0,
-                                                 "Int16Array",
-                                                 QLatin1String("Trying to create uncreatable: Int16Array, use Arrays.newInt16Array() instead."));
-    qmlRegisterUncreatableType<CanvasUint16Array>(uri,
-                                                  1, 0,
-                                                  "Uint16Array",
-                                                  QLatin1String("Trying to create uncreatable: Uint16Array, use Arrays.newUint16Array() instead."));
-    qmlRegisterUncreatableType<CanvasInt32Array>(uri,
-                                                 1, 0,
-                                                 "Int32Array",
-                                                 QLatin1String("Trying to create uncreatable: Int32Array, use Arrays.newInt32Array() instead."));
-    qmlRegisterUncreatableType<CanvasUint32Array>(uri,
-                                                  1, 0,
-                                                  "Uint32Array",
-                                                  QLatin1String("Trying to create uncreatable: Uint32Array, use Arrays.newUint32Array() instead."));
-    qmlRegisterUncreatableType<CanvasFloat32Array>(uri,
-                                                   1, 0,
-                                                   "Float32Array",
-                                                   QLatin1String("Trying to create uncreatable: Float32Array, use Arrays.newFloat32Array() instead."));
-    qmlRegisterUncreatableType<CanvasFloat64Array>(uri,
-                                                   1, 0,
-                                                   "Float64Array",
-                                                   QLatin1String("Trying to create uncreatable: Float64Array, use Arrays.newFloat64Array() instead."));
     qmlRegisterUncreatableType<CanvasShaderPrecisionFormat>(uri,
                                                             1, 0,
                                                             "ShaderPrecisionFormat",
@@ -149,6 +106,53 @@ void QtCanvas3DPlugin::registerTypes(const char *uri)
                                                       "UniformLocation",
                                                       QLatin1String("Trying to create uncreatable: UniformLocation, use Context3D.getUniformLocation() instead."));
 
+    // TYPED ARRAY IMPLEMENTATION
+    qmlRegisterSingletonType<CanvasTypedArrayFactory>(uri,
+                                                      1, 0,
+                                                      "Arrays",
+                                                      CanvasTypedArrayFactory::type_array_factory_provider);
+
+    qmlRegisterUncreatableType<CanvasArrayBuffer>(uri,
+                                                  1, 0,
+                                                  "ArrayBuffer",
+                                                  QLatin1String("Trying to create uncreatable: ArrayBuffer."));
+    qmlRegisterUncreatableType<CanvasInt8Array>(uri,
+                                                1, 0,
+                                                "Int8Array",
+                                                QLatin1String("Trying to create uncreatable: Int8Array, use Arrays.newInt8Array() instead."));
+    qmlRegisterUncreatableType<CanvasUint8Array>(uri,
+                                                 1, 0,
+                                                 "Uint8Array",
+                                                 QLatin1String("Trying to create uncreatable: Uint8Array, use Arrays.newUint8Array() instead."));
+    qmlRegisterUncreatableType<CanvasUint8ClampedArray>(uri,
+                                                        1, 0,
+                                                        "Uint8ClampedArray",
+                                                        QLatin1String("Trying to create uncreatable: Uint8ClampedArray, use Arrays.newUint8ClampedArray() instead."));
+    qmlRegisterUncreatableType<CanvasInt16Array>(uri,
+                                                 1, 0,
+                                                 "Int16Array",
+                                                 QLatin1String("Trying to create uncreatable: Int16Array, use Arrays.newInt16Array() instead."));
+    qmlRegisterUncreatableType<CanvasUint16Array>(uri,
+                                                  1, 0,
+                                                  "Uint16Array",
+                                                  QLatin1String("Trying to create uncreatable: Uint16Array, use Arrays.newUint16Array() instead."));
+    qmlRegisterUncreatableType<CanvasInt32Array>(uri,
+                                                 1, 0,
+                                                 "Int32Array",
+                                                 QLatin1String("Trying to create uncreatable: Int32Array, use Arrays.newInt32Array() instead."));
+    qmlRegisterUncreatableType<CanvasUint32Array>(uri,
+                                                  1, 0,
+                                                  "Uint32Array",
+                                                  QLatin1String("Trying to create uncreatable: Uint32Array, use Arrays.newUint32Array() instead."));
+    qmlRegisterUncreatableType<CanvasFloat32Array>(uri,
+                                                   1, 0,
+                                                   "Float32Array",
+                                                   QLatin1String("Trying to create uncreatable: Float32Array, use Arrays.newFloat32Array() instead."));
+    qmlRegisterUncreatableType<CanvasFloat64Array>(uri,
+                                                   1, 0,
+                                                   "Float64Array",
+                                                   QLatin1String("Trying to create uncreatable: Float64Array, use Arrays.newFloat64Array() instead."));
+
     // EXTENSIONS
     qmlRegisterUncreatableType<CanvasGLStateDump>(uri,
                                                   1, 0,
diff --git a/src/qcanvas3d_plugin.h b/src/qcanvas3d_plugin.h
index 2bda1e75167a16eaf1e986ff5f10e02ba45edfa5..beedc1c1a1b134ca29a3ab9d24dd660d84d86592 100644
--- a/src/qcanvas3d_plugin.h
+++ b/src/qcanvas3d_plugin.h
@@ -45,25 +45,25 @@
 #include "buffer3d_p.h"
 #include "uniformlocation_p.h"
 #include "teximage3d_p.h"
-#include "typedarrayfactory_p.h"
-#include "typedarray_p.h"
-#include "arraybuffer_p.h"
-#include "arraybufferview_p.h"
-#include "int8array_p.h"
-#include "uint8array_p.h"
-#include "int16array_p.h"
-#include "uint16array_p.h"
-#include "int32array_p.h"
-#include "uint32array_p.h"
-#include "float32array_p.h"
-#include "float64array_p.h"
-#include "uint8clampedarray_p.h"
 #include "contextattributes_p.h"
 #include "framebuffer3d_p.h"
 #include "renderbuffer3d_p.h"
 #include "shaderprecisionformat_p.h"
 #include "activeinfo3d_p.h"
 #include "canvasglstatedump_p.h"
+#include "typedarray/typedarrayfactory_p.h"
+#include "typedarray/typedarray_p.h"
+#include "typedarray/arraybuffer_p.h"
+#include "typedarray/arraybufferview_p.h"
+#include "typedarray/int8array_p.h"
+#include "typedarray/uint8array_p.h"
+#include "typedarray/int16array_p.h"
+#include "typedarray/uint16array_p.h"
+#include "typedarray/int32array_p.h"
+#include "typedarray/uint32array_p.h"
+#include "typedarray/float32array_p.h"
+#include "typedarray/float64array_p.h"
+#include "typedarray/uint8clampedarray_p.h"
 
 #include <QQmlExtensionPlugin>
 
diff --git a/src/src.pro b/src/src.pro
index 1f842d5c46c0fe9668a1593bb80093fd02d9f1df..947067390d1d8430e73e28978ac78ebcff755693 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -14,22 +14,22 @@ include($$PWD/designer/designer.pri)
 
 QMAKE_DOCS = $$PWD/doc/qtcanvas3d.qdocconf
 
-SOURCES += qcanvas3d_plugin.cpp \
-    arraybuffer.cpp \
-    arraybufferview.cpp \
-    float32array.cpp \
-    uint8array.cpp \
-    uint16array.cpp \
-    int8array.cpp \
-    int16array.cpp \
-    int32array.cpp \
-    uint32array.cpp \
-    float64array.cpp \
-    typedarrayfactory.cpp \
-    typedarray.cpp \
+SOURCES += typedarray/arraybuffer.cpp \
+    typedarray/arraybufferview.cpp \
+    typedarray/float32array.cpp \
+    typedarray/uint8array.cpp \
+    typedarray/uint16array.cpp \
+    typedarray/int8array.cpp \
+    typedarray/int16array.cpp \
+    typedarray/int32array.cpp \
+    typedarray/uint32array.cpp \
+    typedarray/float64array.cpp \
+    typedarray/typedarrayfactory.cpp \
+    typedarray/typedarray.cpp \
+    typedarray/uint8clampedarray.cpp \
+    qcanvas3d_plugin.cpp \
     arrayutils.cpp \
     enumtostringmap.cpp \
-    uint8clampedarray.cpp \
     abstractobject3d.cpp \
     canvas3d.cpp \
     buffer3d.cpp \
@@ -48,22 +48,22 @@ SOURCES += qcanvas3d_plugin.cpp \
     activeinfo3d.cpp \
     canvasglstatedump.cpp
 
-HEADERS += qcanvas3d_plugin.h \
-    arraybuffer_p.h \
-    arraybufferview_p.h \
-    float32array_p.h \
-    uint8array_p.h \
-    uint16array_p.h \
-    int8array_p.h \
-    int16array_p.h \
-    int32array_p.h \
-    uint32array_p.h \
-    float64array_p.h \
-    typedarrayfactory_p.h \
-    typedarray_p.h \
-    arrayutils_p.h \
+HEADERS += typedarray/arraybuffer_p.h \
+    typedarray/arraybufferview_p.h \
+    typedarray/float32array_p.h \
+    typedarray/uint8array_p.h \
+    typedarray/uint16array_p.h \
+    typedarray/int8array_p.h \
+    typedarray/int16array_p.h \
+    typedarray/int32array_p.h \
+    typedarray/uint32array_p.h \
+    typedarray/float64array_p.h \
+    typedarray/typedarrayfactory_p.h \
+    typedarray/typedarray_p.h \
+    typedarray/arrayutils_p.h \
+    typedarray/uint8clampedarray_p.h \
+    qcanvas3d_plugin.h \
     enumtostringmap_p.h \
-    uint8clampedarray_p.h \
     abstractobject3d_p.h \
     canvas3d_p.h \
     buffer3d_p.h \
diff --git a/src/arraybuffer.cpp b/src/typedarray/arraybuffer.cpp
similarity index 100%
rename from src/arraybuffer.cpp
rename to src/typedarray/arraybuffer.cpp
diff --git a/src/arraybuffer_p.h b/src/typedarray/arraybuffer_p.h
similarity index 100%
rename from src/arraybuffer_p.h
rename to src/typedarray/arraybuffer_p.h
diff --git a/src/arraybufferview.cpp b/src/typedarray/arraybufferview.cpp
similarity index 100%
rename from src/arraybufferview.cpp
rename to src/typedarray/arraybufferview.cpp
diff --git a/src/arraybufferview_p.h b/src/typedarray/arraybufferview_p.h
similarity index 98%
rename from src/arraybufferview_p.h
rename to src/typedarray/arraybufferview_p.h
index 0af2897a4e6c0d8b0f0570f252da075d3ad54e71..dadc22469c36b67118cb9b227ffd80ec3a70b182 100644
--- a/src/arraybufferview_p.h
+++ b/src/typedarray/arraybufferview_p.h
@@ -47,8 +47,8 @@
 #ifndef ARRAYBUFFERVIEW_P_H
 #define ARRAYBUFFERVIEW_P_H
 
-#include "context3d_p.h"
-#include "abstractobject3d_p.h"
+#include "../context3d_p.h"
+#include "../abstractobject3d_p.h"
 
 class CanvasArrayBuffer;
 
diff --git a/src/float32array.cpp b/src/typedarray/float32array.cpp
similarity index 99%
rename from src/float32array.cpp
rename to src/typedarray/float32array.cpp
index b9de1e7a99553a6125c1498b3282c5a341a5739c..52e2b89018784c2c6376bc89f60534e4e09e8d16 100644
--- a/src/float32array.cpp
+++ b/src/typedarray/float32array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "float32array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/float32array_p.h b/src/typedarray/float32array_p.h
similarity index 100%
rename from src/float32array_p.h
rename to src/typedarray/float32array_p.h
diff --git a/src/float64array.cpp b/src/typedarray/float64array.cpp
similarity index 99%
rename from src/float64array.cpp
rename to src/typedarray/float64array.cpp
index 8ee7b1b02af311b224e904aa25166f6754a585fa..0f2044549091f19faccf2abf09d21da97f1da49e 100644
--- a/src/float64array.cpp
+++ b/src/typedarray/float64array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "float64array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/float64array_p.h b/src/typedarray/float64array_p.h
similarity index 100%
rename from src/float64array_p.h
rename to src/typedarray/float64array_p.h
diff --git a/src/int16array.cpp b/src/typedarray/int16array.cpp
similarity index 99%
rename from src/int16array.cpp
rename to src/typedarray/int16array.cpp
index 9d76c4039b197c4fdf903f7e2b3b34ceeaacc386..4a3d7420f71058be47b6ce7c32c4c0f757c0d9e9 100644
--- a/src/int16array.cpp
+++ b/src/typedarray/int16array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "int16array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/int16array_p.h b/src/typedarray/int16array_p.h
similarity index 100%
rename from src/int16array_p.h
rename to src/typedarray/int16array_p.h
diff --git a/src/int32array.cpp b/src/typedarray/int32array.cpp
similarity index 99%
rename from src/int32array.cpp
rename to src/typedarray/int32array.cpp
index da17cb32ec39f50b7400ab83f0f49bd8b2c10e91..0c626d2189e4250f736ff291318d3ee8e4a8fd24 100644
--- a/src/int32array.cpp
+++ b/src/typedarray/int32array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "int32array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/int32array_p.h b/src/typedarray/int32array_p.h
similarity index 100%
rename from src/int32array_p.h
rename to src/typedarray/int32array_p.h
diff --git a/src/int8array.cpp b/src/typedarray/int8array.cpp
similarity index 99%
rename from src/int8array.cpp
rename to src/typedarray/int8array.cpp
index bbe5d8762947216c52e5274d2d5fc25786e6ad09..a09db45c1addb98eb8295f38544ebb7e763d2c6e 100644
--- a/src/int8array.cpp
+++ b/src/typedarray/int8array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "int8array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/int8array_p.h b/src/typedarray/int8array_p.h
similarity index 100%
rename from src/int8array_p.h
rename to src/typedarray/int8array_p.h
diff --git a/src/typedarray.cpp b/src/typedarray/typedarray.cpp
similarity index 100%
rename from src/typedarray.cpp
rename to src/typedarray/typedarray.cpp
diff --git a/src/typedarray_p.h b/src/typedarray/typedarray_p.h
similarity index 100%
rename from src/typedarray_p.h
rename to src/typedarray/typedarray_p.h
diff --git a/src/typedarrayfactory.cpp b/src/typedarray/typedarrayfactory.cpp
similarity index 99%
rename from src/typedarrayfactory.cpp
rename to src/typedarray/typedarrayfactory.cpp
index 8fd8fcccc3c3342439ad7c4aaf6f577e821d7140..95aea3891b094f1bf577df77bf5815b2e743ad26 100644
--- a/src/typedarrayfactory.cpp
+++ b/src/typedarray/typedarrayfactory.cpp
@@ -45,8 +45,8 @@
 #include "float32array_p.h"
 #include "float64array_p.h"
 #include "uint8clampedarray_p.h"
-#include "canvas3dcommon_p.h"
-#include "teximage3d_p.h"
+#include "../canvas3dcommon_p.h"
+#include "../teximage3d_p.h"
 
 #include <QDebug>
 
diff --git a/src/typedarrayfactory_p.h b/src/typedarray/typedarrayfactory_p.h
similarity index 100%
rename from src/typedarrayfactory_p.h
rename to src/typedarray/typedarrayfactory_p.h
diff --git a/src/uint16array.cpp b/src/typedarray/uint16array.cpp
similarity index 99%
rename from src/uint16array.cpp
rename to src/typedarray/uint16array.cpp
index 1eebb096f6d53338dbf7b921bba6e86f644e93d8..70a92ee9292f994c48f80452382dbef00276a3c6 100644
--- a/src/uint16array.cpp
+++ b/src/typedarray/uint16array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "uint16array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/uint16array_p.h b/src/typedarray/uint16array_p.h
similarity index 100%
rename from src/uint16array_p.h
rename to src/typedarray/uint16array_p.h
diff --git a/src/uint32array.cpp b/src/typedarray/uint32array.cpp
similarity index 99%
rename from src/uint32array.cpp
rename to src/typedarray/uint32array.cpp
index 81c2e1c08936583f6b21277b8754212f56c0d1f5..f9b097e741545058732d3ec296a2f119627d1a9a 100644
--- a/src/uint32array.cpp
+++ b/src/typedarray/uint32array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "uint32array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/uint32array_p.h b/src/typedarray/uint32array_p.h
similarity index 100%
rename from src/uint32array_p.h
rename to src/typedarray/uint32array_p.h
diff --git a/src/uint8array.cpp b/src/typedarray/uint8array.cpp
similarity index 99%
rename from src/uint8array.cpp
rename to src/typedarray/uint8array.cpp
index 56630c55422273aefcfd6aa4f8530638f2315f61..f41de821f03c7f540e8adc054f3334131e46072e 100644
--- a/src/uint8array.cpp
+++ b/src/typedarray/uint8array.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "uint8array_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/uint8array_p.h b/src/typedarray/uint8array_p.h
similarity index 100%
rename from src/uint8array_p.h
rename to src/typedarray/uint8array_p.h
diff --git a/src/uint8clampedarray.cpp b/src/typedarray/uint8clampedarray.cpp
similarity index 99%
rename from src/uint8clampedarray.cpp
rename to src/typedarray/uint8clampedarray.cpp
index d3c89b235427bf7e96cddabc832f228580552e29..d2d6161a3522d4cfd4d9ee87317c079cbbd9d52e 100644
--- a/src/uint8clampedarray.cpp
+++ b/src/typedarray/uint8clampedarray.cpp
@@ -35,7 +35,7 @@
 ****************************************************************************/
 
 #include "uint8clampedarray_p.h"
-#include "arrayutils_p.h"
+#include "../arrayutils_p.h"
 #include "arraybuffer_p.h"
 
 /*!
diff --git a/src/uint8clampedarray_p.h b/src/typedarray/uint8clampedarray_p.h
similarity index 100%
rename from src/uint8clampedarray_p.h
rename to src/typedarray/uint8clampedarray_p.h