From 1aa012a1c83ce8905e5440d3e7ae11192dc73878 Mon Sep 17 00:00:00 2001
From: Alan Alpert <alan.alpert@nokia.com>
Date: Tue, 6 Sep 2011 10:40:21 +1000
Subject: [PATCH] Particles module refactoring en masse

All the little changes in one commit.

StochasticDirection -> Direction
AngledDirection -> AngleDirection
TargetedDirection -> TargetDirection
QSGCustomParticle is now Affector's implementation (C++ only refactor)
FollowEmitter -> TrailEmitter
Kill -> Age and gained lifeLeft property
ModelParticle is removed, use ItemParticle instead.
Added RectangleShape to replace Shape for the case of Rectangles
Abstract Types are no longer createable, despite sensible defaults.
GLSL variables in CustomParticle now begin with qt_
JS variables are now such that x,vx,ax are current (old ones are now
initialX, initialVX, initialAX). Same for y. A few more were extended.
Emitter::emitCap -> Emitter::maximumEmitted. Set to -1 for noCap: false
Emitter::noCap is gone.
Emitter::emitting -> Emitter::enabled
Affector::active -> Affector::enabled
Affector::collisionParticles -> Affector::whenCollidingWith
Affector::signal is gone.
PointAttractor -> Attractor
Attractor/Wander::physics -> ::affectedParameter
ParticleSystem::fastForward is gone
ParticleSystem::startTime is gone (use Emitter::startTime)
ParticleSystem::clear -> ParticleSystem::empty
And various Doc fixes.

Change-Id: Ia3b02b987f692e6f1bd14c42e575381bdfb7bbb5
Reviewed-on: http://codereview.qt-project.org/4231
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
---
 .../flickr/content/ImageDetails.qml           |  47 +-
 .../declarative/flickr/content/Progress.qml   |   4 +-
 .../declarative/flickr/content/StreamView.qml | 107 -----
 .../flickr/content/UnifiedDelegate.qml        |   8 -
 examples/declarative/flickr/flickr.qml        |  74 ++--
 .../declarative/particles/allsmiles/plain.qml |   2 +-
 .../declarative/particles/allsmiles/smile.qml |  12 +-
 .../particles/allsmiles/smilefactory.qml      |  14 +-
 .../particles/allsmiles/spriteparticles.qml   |   2 -
 .../allsmiles/spritestateparticles.qml        |   3 +-
 .../allsmiles/spritevariedparticles.qml       |   3 +-
 .../particles/allsmiles/ultraparticles.qml    |   3 +-
 .../particles/asteroid/asteroid.qml           |   1 -
 .../particles/asteroid/blackhole.qml          |  19 +-
 .../particles/custom/blurparticles.qml        |   6 +-
 .../declarative/particles/custom/custom.qml   |  31 +-
 .../particles/custom/delegates.qml            |   2 +-
 .../particles/custom/fallingleaves.qml        |  18 +-
 .../declarative/particles/custom/shader.qml   |  20 +-
 .../particles/exampleslauncher.qml            |   5 -
 .../particles/modelparticles/bubbles.qml      |  82 ----
 .../modelparticles/content/Delegate.qml       |  88 ----
 .../modelparticles/content/Delegate2.qml      |  79 ----
 .../content/ExpandingDelegate.qml             | 204 ---------
 .../modelparticles/content/RssModel.qml       |  53 ---
 .../modelparticles/content/bubble.png         | Bin 3413 -> 0 bytes
 .../modelparticles/content/script.js          |  27 --
 .../particles/modelparticles/gridsplosion.qml | 144 ------
 .../particles/modelparticles/package.qml      |  91 ----
 .../particles/modelparticles/stream.qml       | 276 ------------
 examples/declarative/particles/snow/snow.qml  |  11 +-
 .../spaceexplorer/content/helpers.js          |   8 -
 .../spaceexplorer/content/particle4.png       | Bin 1799 -> 0 bytes
 .../spaceexplorer/content/powerupScore.png    | Bin 83169 -> 0 bytes
 .../content/powerupScore_gone.png             | Bin 140 -> 0 bytes
 .../content/powerupScore_got.png              | Bin 81528 -> 0 bytes
 .../spaceexplorer/content/rocket.png          | Bin 7315 -> 0 bytes
 .../spaceexplorer/content/rocket2.png         | Bin 1918 -> 0 bytes
 .../spaceexplorer/content/rocketEye.png       | Bin 2073 -> 0 bytes
 .../particles/spaceexplorer/content/star.png  | Bin 1550 -> 0 bytes
 .../particles/spaceexplorer/spaceexplorer.qml | 417 ------------------
 .../particles/trails/combustion.qml           |   8 +-
 .../particles/trails/dynamicemitters.qml      |   6 +-
 .../particles/trails/fireballs.qml            |   6 +-
 .../particles/trails/fireworks.qml            |  17 +-
 .../declarative/particles/trails/layered.qml  |   2 +-
 .../declarative/particles/trails/list.qml     |   4 +-
 .../particles/trails/overburst.qml            |  10 +-
 .../declarative/particles/trails/portal.qml   |  10 +-
 .../declarative/particles/trails/shimmer.qml  |   1 -
 .../declarative/particles/trails/trails.qml   |   8 +-
 .../particles/trails/turbulence.qml           |  10 +-
 .../plasmapatrol/content/BlasterHardpoint.qml |  10 +-
 .../plasmapatrol/content/CannonHardpoint.qml  |   6 +-
 .../plasmapatrol/content/Cruiser.qml          |  10 +-
 .../plasmapatrol/content/Frigate.qml          |   4 +-
 .../plasmapatrol/content/LaserHardpoint.qml   |   8 +-
 .../content/PlasmaPatrolParticles.qml         |  10 +-
 .../plasmapatrol/content/Sloop.qml            |   4 +-
 .../declarative/plasmapatrol/plasmapatrol.qml |   4 +-
 .../samegame/SamegameCore/BoomBlock.qml       |   6 +-
 src/declarative/particles/particles.pri       |  30 +-
 src/declarative/particles/qsgage.cpp          |  81 ++++
 .../particles/{qsgkill.cpp => qsgage_p.h}     |  57 ++-
 ...leddirection.cpp => qsgangledirection.cpp} |  22 +-
 ...leddirection_p.h => qsgangledirection_p.h} |   6 +-
 .../particles/qsgcumulativedirection.cpp      |  10 +-
 .../particles/qsgcumulativedirection_p.h      |  10 +-
 .../particles/qsgcustomaffector.cpp           |  80 ++++
 .../{qsgkill_p.h => qsgcustomaffector_p.h}    |  26 +-
 .../particles/qsgcustomparticle.cpp           |  94 ++--
 ...ochasticdirection.cpp => qsgdirection.cpp} |  10 +-
 ...ochasticdirection_p.h => qsgdirection_p.h} |   4 +-
 .../particles/qsgimageparticle.cpp            |   6 +-
 .../particles/qsgimageparticle_p.h            |  22 +-
 .../particles/qsgmodelparticle.cpp            | 335 --------------
 .../particles/qsgmodelparticle_p.h            | 140 ------
 .../particles/qsgparticleaffector.cpp         |  54 +--
 .../particles/qsgparticleaffector_p.h         |  62 +--
 .../particles/qsgparticleemitter.cpp          |  65 +--
 .../particles/qsgparticleemitter_p.h          | 184 ++++----
 .../particles/qsgparticleextruder.cpp         |  22 +-
 .../particles/qsgparticleextruder_p.h         |  19 +-
 .../particles/qsgparticlepainter.cpp          |   4 +
 .../particles/qsgparticlesmodule.cpp          |  34 +-
 .../particles/qsgparticlesystem.cpp           |  81 +++-
 .../particles/qsgparticlesystem_p.h           |  32 +-
 .../particles/qsgpointattractor.cpp           |  42 +-
 .../particles/qsgpointattractor_p.h           |  20 +-
 .../particles/qsgpointdirection.cpp           |   4 +-
 .../particles/qsgpointdirection_p.h           |   4 +-
 .../particles/qsgrectangleextruder.cpp        |  86 ++++
 .../particles/qsgrectangleextruder_p.h        |  88 ++++
 ...eddirection.cpp => qsgtargetdirection.cpp} |  28 +-
 ...eddirection_p.h => qsgtargetdirection_p.h} |   6 +-
 ...gfollowemitter.cpp => qsgtrailemitter.cpp} |  46 +-
 ...gfollowemitter_p.h => qsgtrailemitter_p.h} |   7 +-
 src/declarative/particles/qsgturbulence.cpp   |   2 +-
 .../particles/qsgv8particledata.cpp           |  58 +--
 src/declarative/particles/qsgwander.cpp       |  33 +-
 src/declarative/particles/qsgwander_p.h       |  22 +-
 101 files changed, 1102 insertions(+), 2839 deletions(-)
 delete mode 100644 examples/declarative/flickr/content/StreamView.qml
 delete mode 100644 examples/declarative/particles/modelparticles/bubbles.qml
 delete mode 100644 examples/declarative/particles/modelparticles/content/Delegate.qml
 delete mode 100644 examples/declarative/particles/modelparticles/content/Delegate2.qml
 delete mode 100644 examples/declarative/particles/modelparticles/content/ExpandingDelegate.qml
 delete mode 100644 examples/declarative/particles/modelparticles/content/RssModel.qml
 delete mode 100644 examples/declarative/particles/modelparticles/content/bubble.png
 delete mode 100644 examples/declarative/particles/modelparticles/content/script.js
 delete mode 100644 examples/declarative/particles/modelparticles/gridsplosion.qml
 delete mode 100644 examples/declarative/particles/modelparticles/package.qml
 delete mode 100644 examples/declarative/particles/modelparticles/stream.qml
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/helpers.js
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/particle4.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/powerupScore.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/powerupScore_gone.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/powerupScore_got.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/rocket.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/rocket2.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/rocketEye.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/content/star.png
 delete mode 100644 examples/declarative/particles/spaceexplorer/spaceexplorer.qml
 create mode 100644 src/declarative/particles/qsgage.cpp
 rename src/declarative/particles/{qsgkill.cpp => qsgage_p.h} (70%)
 rename src/declarative/particles/{qsgangleddirection.cpp => qsgangledirection.cpp} (84%)
 rename src/declarative/particles/{qsgangleddirection_p.h => qsgangledirection_p.h} (95%)
 create mode 100644 src/declarative/particles/qsgcustomaffector.cpp
 rename src/declarative/particles/{qsgkill_p.h => qsgcustomaffector_p.h} (84%)
 rename src/declarative/particles/{qsgstochasticdirection.cpp => qsgdirection.cpp} (85%)
 rename src/declarative/particles/{qsgstochasticdirection_p.h => qsgdirection_p.h} (95%)
 delete mode 100644 src/declarative/particles/qsgmodelparticle.cpp
 delete mode 100644 src/declarative/particles/qsgmodelparticle_p.h
 create mode 100644 src/declarative/particles/qsgrectangleextruder.cpp
 create mode 100644 src/declarative/particles/qsgrectangleextruder_p.h
 rename src/declarative/particles/{qsgtargeteddirection.cpp => qsgtargetdirection.cpp} (81%)
 rename src/declarative/particles/{qsgtargeteddirection_p.h => qsgtargetdirection_p.h} (97%)
 rename src/declarative/particles/{qsgfollowemitter.cpp => qsgtrailemitter.cpp} (85%)
 rename src/declarative/particles/{qsgfollowemitter_p.h => qsgtrailemitter_p.h} (93%)

diff --git a/examples/declarative/flickr/content/ImageDetails.qml b/examples/declarative/flickr/content/ImageDetails.qml
index d45f8e80e9..8d3cdfb494 100644
--- a/examples/declarative/flickr/content/ImageDetails.qml
+++ b/examples/declarative/flickr/content/ImageDetails.qml
@@ -164,7 +164,7 @@ Flipable {
                     anchors.fill: parent 
                     frequency: 100
                     strength: 250
-                    active: false
+                    enabled: false
                 }
 
                 Item{
@@ -180,7 +180,7 @@ Flipable {
                     function imageOutAnim(){
                         bigImage.visible = false;
                         noiseIn.visible = false;
-                        turbulence.active = true;
+                        turbulence.enabled = true;
                         endEffectTimer.start();
                         pixelEmitter.burst(2048);
                     }
@@ -190,7 +190,7 @@ Flipable {
                         repeat: false
                         running: false
                         onTriggered:{
-                            turbulence.active = false;
+                            turbulence.enabled = false;
                             noiseIn.visible = false;
                             bigImage.visible = true;
                         }
@@ -245,7 +245,7 @@ Flipable {
                         size: 4
                         lifeSpan: flipDuration
                         emitRate: 2048
-                        emitting: false
+                        enabled: false
                     }
                     CustomParticle{
                         id: blowOut
@@ -253,54 +253,23 @@ Flipable {
                         property real maxWidth: effectBox.width
                         property real maxHeight: effectBox.height
                         vertexShader:"
-                            attribute highp vec2 vPos;
-                            attribute highp vec2 vTex;
-                            attribute highp vec4 vData; //  x = time,  y = lifeSpan, z = size,  w = endSize
-                            attribute highp vec4 vVec; // x,y = constant speed,  z,w = acceleration
-                            attribute highp float r;
-
                             uniform highp float maxWidth;
                             uniform highp float maxHeight;
 
-                            uniform highp mat4 qt_Matrix;
-                            uniform highp float timestamp;
-                            uniform lowp float qt_Opacity;
-
                             varying highp vec2 fTex2;
-                            varying lowp float fFade;
 
                             void main() {
-                                fTex2 = vec2(vPos.x / maxWidth, vPos.y / maxHeight);
-                                highp float size = vData.z;
-                                highp float endSize = vData.w;
-
-                                highp float t = (timestamp - vData.x) / vData.y;
-
-                                highp float currentSize = mix(size, endSize, t * t);
-
-                                if (t < 0. || t > 1.)
-                                currentSize = 0.;
-
-                                highp vec2 pos = vPos
-                                - currentSize / 2. + currentSize * vTex          // adjust size
-                                + vVec.xy * t * vData.y         // apply speed vector..
-                                + 0.5 * vVec.zw * pow(t * vData.y, 2.);
-
-                                gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1);
-
-                                highp float fadeIn = min(t * 10., 1.);
-                                highp float fadeOut = 1. - max(0., min((t - 0.75) * 4., 1.));
-
-                                fFade = 1.0;//fadeIn * fadeOut * qt_Opacity;
+                                defaultMain();
+                                fTex2 = vec2(qt_ParticlePos.x / maxWidth, qt_ParticlePos.y / maxHeight);
                             }
                         "
                         property variant pictureTexture: pictureSource
                         fragmentShader: "
+                            uniform lowp float qt_Opacity;
                             uniform sampler2D pictureTexture;
                             varying highp vec2 fTex2;
-                            varying highp float fFade;
                             void main() {
-                                gl_FragColor = texture2D(pictureTexture, fTex2) * fFade;
+                                gl_FragColor = texture2D(pictureTexture, fTex2) * qt_Opacity;
                         }"
                     }
 
diff --git a/examples/declarative/flickr/content/Progress.qml b/examples/declarative/flickr/content/Progress.qml
index 28fa0c3bac..598ff7123c 100644
--- a/examples/declarative/flickr/content/Progress.qml
+++ b/examples/declarative/flickr/content/Progress.qml
@@ -69,14 +69,14 @@ Item{
     Emitter{
         y: 2; height: parent.height-4;
         x: 2; width: Math.max(parent.width * progress - 4, 0);
-        speed: AngledDirection{ angleVariation: 180; magnitudeVariation: 12 }
+        speed: AngleDirection{ angleVariation: 180; magnitudeVariation: 12 }
         system: barSys
         emitRate: width;
         lifeSpan: 1000
         size: 20
         sizeVariation: 4
         endSize: 12
-        emitCap: parent.width;
+        maximumEmitted: parent.width;
     }
 
     Text {
diff --git a/examples/declarative/flickr/content/StreamView.qml b/examples/declarative/flickr/content/StreamView.qml
deleted file mode 100644
index 9aa6b746a8..0000000000
--- a/examples/declarative/flickr/content/StreamView.qml
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtDeclarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQuick.Particles 2.0
-
-Item{
-    id: container
-    property alias model: mp.model
-    property alias delegate: mp.delegate
-    property bool jumpStarted: false
-    ParticleSystem{ 
-        id: sys 
-        anchors.fill:parent
-    }
-    ModelParticle{
-        id: mp
-        fade: false
-        system: sys
-        anchors.fill: parent
-        onModelCountChanged: {
-            if(!jumpStarted && modelCount > 0){
-                console.log("Jumping");
-                jumpStarted = true;
-                sys.fastForward(8000);
-            }
-        }
-    }
-    property real emitterSpacing: parent.width/3
-    Emitter{
-        system: sys
-        width: emitterSpacing - 64
-        x: emitterSpacing*0 + 32
-        y: -128
-        height: 32
-        speed: PointDirection{ y: (container.height + 128)/12 }
-        emitRate: 0.4
-        lifeSpan: 1000000//eventually -1 should mean a million seconds for neatness
-        emitCap: 15
-    }
-    Emitter{
-        system: sys
-        width: emitterSpacing - 64
-        x: emitterSpacing*1 + 32
-        y: -128
-        height: 32
-        speed: PointDirection{ y: (container.height + 128)/12 }
-        emitRate: 0.4
-        lifeSpan: 1000000//eventually -1 should mean a million seconds for neatness
-        emitCap: 15
-    }
-    Emitter{
-        system: sys
-        width: emitterSpacing - 64
-        x: emitterSpacing*2 + 32
-        y: -128
-        height: 32
-        speed: PointDirection{ y: (container.height + 128)/12 }
-        emitRate: 0.4
-        lifeSpan: 1000000//eventually -1 should mean a million seconds for neatness
-        emitCap: 15
-    }
-    Kill{
-        system: sys
-        y: container.height + 64
-        width: container.width
-        height: 6400
-    }
-}
diff --git a/examples/declarative/flickr/content/UnifiedDelegate.qml b/examples/declarative/flickr/content/UnifiedDelegate.qml
index 24bd146b9f..5c8ce75d05 100644
--- a/examples/declarative/flickr/content/UnifiedDelegate.qml
+++ b/examples/declarative/flickr/content/UnifiedDelegate.qml
@@ -65,12 +65,6 @@ Package {
         id: streamwrapper;
         width: 80; height: 80
         Package.name: "stream"
-        function pleaseFreeze(){
-            ModelParticle.particle.freeze(streamwrapper);
-        }
-        function pleaseUnfreeze(){
-            ModelParticle.particle.unfreeze(streamwrapper);
-        }
     }
     Item {
         //anchors.centerIn: parent//Doesn't animate :(
@@ -112,7 +106,6 @@ Package {
         transitions: [
             Transition {
                 from: "Show"; to: "Details"
-                ScriptAction{ script: streamwrapper.pleaseFreeze(); }
                 ParentAnimation {
                     via: foreground
                     NumberAnimation { properties: "x,y"; duration: 500; easing.type: Easing.InOutQuad }
@@ -125,7 +118,6 @@ Package {
                         via: foreground
                         NumberAnimation { properties: "x,y"; duration: 500; easing.type: Easing.InOutQuad }
                     }
-                    ScriptAction{ script: streamwrapper.pleaseUnfreeze(); }
                 }
             }
         ]
diff --git a/examples/declarative/flickr/flickr.qml b/examples/declarative/flickr/flickr.qml
index a222b41341..14e4fcaedf 100644
--- a/examples/declarative/flickr/flickr.qml
+++ b/examples/declarative/flickr/flickr.qml
@@ -45,7 +45,7 @@ import "content"
 
 Item {
     id: screen; width: 320; height: 480
-    property bool inGridView : false
+    property bool inGridView : true
 
     Rectangle {
         id: background
@@ -54,40 +54,38 @@ Item {
         Image { source: "content/images/stripes.png"; fillMode: Image.Tile; anchors.fill: parent; opacity: 0.3 }
         ParticleSystem {
             id: bgParticles
-            startTime: 16000
-        }
-        ImageParticle {
-            particles: ["trail"]
-            source: "content/images/particle.png"
-            color: "#1A1A6F"
-            alpha: 0.1
-            colorVariation: 0.01
-            blueVariation: 0.8
-            system: bgParticles
-        }
-        Emitter {
-            particle: "drops"
-            width: parent.width
-            emitRate: 0.5
-            lifeSpan: 20000
-            speed: PointDirection{
-                y: {screen.height/18} 
-            }
-            system: bgParticles
-        }
-        FollowEmitter {
-            follow: "drops"
-            particle: "trail"
-            emitRatePerParticle: 18
-            size: 32
-            endSize: 0
-            sizeVariation: 4
-            lifeSpan: 1200
-            system: bgParticles
             anchors.fill: parent
-            emitWidth: 16
-            emitHeight: 16
-            emitShape: EllipseShape{}
+            ImageParticle {
+                particles: ["trail"]
+                source: "content/images/particle.png"
+                color: "#1A1A6F"
+                alpha: 0.1
+                colorVariation: 0.01
+                blueVariation: 0.8
+            }
+            Emitter {
+                particle: "drops"
+                width: parent.width
+                emitRate: 0.5
+                lifeSpan: 20000
+                startTime: 16000
+                speed: PointDirection{
+                    y: {screen.height/18}
+                }
+            }
+            TrailEmitter {
+                follow: "drops"
+                particle: "trail"
+                emitRatePerParticle: 18
+                size: 32
+                endSize: 0
+                sizeVariation: 4
+                lifeSpan: 1200
+                anchors.fill: parent
+                emitWidth: 16
+                emitHeight: 16
+                emitShape: EllipseShape{}
+            }
         }
 
         VisualDataModel{
@@ -107,14 +105,8 @@ Item {
                 cellWidth: (parent.width-2)/4; cellHeight: cellWidth; width: parent.width; height: parent.height
             }
 
-            StreamView{
-                id: photoStreamView
-                model: vdm.parts.stream
-                width: parent.width; height: parent.height
-            }
-
             states: State {
-                name: "GridView"; when: screen.inGridView == true
+                name: "GridView"; when: state.inGridView == true
             }
 
             transitions: Transition {
diff --git a/examples/declarative/particles/allsmiles/plain.qml b/examples/declarative/particles/allsmiles/plain.qml
index 890a5782d1..89198845b8 100644
--- a/examples/declarative/particles/allsmiles/plain.qml
+++ b/examples/declarative/particles/allsmiles/plain.qml
@@ -17,7 +17,7 @@ Rectangle{
         emitRate: 1000
         size: 20
         lifeSpan: 10000
-        speed: AngledDirection{angleVariation: 360; magnitudeVariation: 100;}
+        speed: AngleDirection{angleVariation: 360; magnitudeVariation: 100;}
     }
     MouseArea{
         anchors.fill: parent
diff --git a/examples/declarative/particles/allsmiles/smile.qml b/examples/declarative/particles/allsmiles/smile.qml
index bfce60cc4a..e091d99e80 100644
--- a/examples/declarative/particles/allsmiles/smile.qml
+++ b/examples/declarative/particles/allsmiles/smile.qml
@@ -77,8 +77,8 @@ Rectangle{
             uniform lowp float qt_Opacity;
 
             void main() {                                           
-                fTex2 = vec2(vPos.x / maxWidth, vPos.y / maxHeight);
-                highp float t = (timestamp - vData.x) / vData.y;
+                fTex2 = vec2(qt_ParticlePos.x / maxWidth, qt_ParticlePos.y / maxHeight);
+                highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;
                 fFade = min(t*4., (1.-t*t)*.75) * qt_Opacity;
                 defaultMain();
             }
@@ -88,19 +88,19 @@ Rectangle{
         fragmentShader: "
             uniform sampler2D particleTexture;
             uniform sampler2D pictureTexture;
-            varying highp vec2 fTex;
+            varying highp vec2 qt_TexCoord0;
             varying highp vec2 fTex2;
             varying lowp float fFade;
             void main() {
-                gl_FragColor = texture2D(pictureTexture, fTex2) * texture2D(particleTexture, fTex).w * fFade;
+                gl_FragColor = texture2D(pictureTexture, fTex2) * texture2D(particleTexture, qt_TexCoord0).w * fFade;
         }"
     }
     Emitter{
         id: emitter
         system: sys
-        emitting: false
+        enabled: false
         lifeSpan: 4000
-        emitCap: 1200
+        maximumEmitted: 1200
         anchors.fill: parent
         size: 32
         speed: PointDirection{ xVariation: 12; yVariation: 12 }
diff --git a/examples/declarative/particles/allsmiles/smilefactory.qml b/examples/declarative/particles/allsmiles/smilefactory.qml
index 5b36eee3cd..fe651491b9 100644
--- a/examples/declarative/particles/allsmiles/smilefactory.qml
+++ b/examples/declarative/particles/allsmiles/smilefactory.qml
@@ -58,33 +58,33 @@ Rectangle{
         system: sys
         particles: ["goingDown"]
         source: "content/squarefacespriteXX.png"
-        rotation: 180
         yVector: PointDirection{ y: 0.5; yVariation: 0.25; xVariation: 0.25; }
+        rotation: 180
     }
     Timer{
         running: true
         repeat: false
         interval: 100
-        onTriggered: emitA.emitting = true;
+        onTriggered: emitA.enabled = true;
     }
     Timer{
         running: true
         repeat: false
         interval: 4200
-        onTriggered: emitB.emitting = true;
+        onTriggered: emitB.enabled = true;
     }
     Timer{
         running: true
         repeat: false
         interval: 8400
-        onTriggered: emitC.emitting = true;
+        onTriggered: emitC.enabled = true;
     }
     Emitter{
         id: emitA
         x: 0
         y: 120
         system: sys
-        emitting: false
+        enabled: false
         particle: "goingRight"
         speed: PointDirection{ x: 100 }
         lifeSpan: 4000
@@ -96,7 +96,7 @@ Rectangle{
         x: 400
         y: 240
         system: sys
-        emitting: false
+        enabled: false
         particle: "goingLeft"
         speed: PointDirection{ x: -100 }
         lifeSpan: 4000
@@ -108,7 +108,7 @@ Rectangle{
         x: 0
         y: 360
         system: sys
-        emitting: false
+        enabled: false
         particle: "goingDown"
         speed: PointDirection{ x: 100 }
         lifeSpan: 4000
diff --git a/examples/declarative/particles/allsmiles/spriteparticles.qml b/examples/declarative/particles/allsmiles/spriteparticles.qml
index f5479f1570..705016e050 100644
--- a/examples/declarative/particles/allsmiles/spriteparticles.qml
+++ b/examples/declarative/particles/allsmiles/spriteparticles.qml
@@ -78,7 +78,6 @@ Rectangle{
         id: particles2
         emitRate: 6000
         lifeSpan: 720
-        emitting: true
         size: 10
         shape: mask
     }
@@ -89,7 +88,6 @@ Rectangle{
         id: particles
         emitRate: 60
         lifeSpan: 1440
-        emitting: true
         speed: PointDirection{xVariation: 10; yVariation: 10;}
         size: 30
         sizeVariation: 10
diff --git a/examples/declarative/particles/allsmiles/spritestateparticles.qml b/examples/declarative/particles/allsmiles/spritestateparticles.qml
index a599c69a63..06b78cdba4 100644
--- a/examples/declarative/particles/allsmiles/spritestateparticles.qml
+++ b/examples/declarative/particles/allsmiles/spritestateparticles.qml
@@ -172,8 +172,7 @@ Rectangle{
         system: sys
         emitRate: 16
         lifeSpan: 10000
-        emitting: true
-        speed: AngledDirection{angle: 90; magnitude: 60; angleVariation: 5}
+        speed: AngleDirection{angle: 90; magnitude: 60; angleVariation: 5}
         acceleration: PointDirection{ y: 10 }
         size: 30
         sizeVariation: 10
diff --git a/examples/declarative/particles/allsmiles/spritevariedparticles.qml b/examples/declarative/particles/allsmiles/spritevariedparticles.qml
index d6e13727ff..4696bfb4ff 100644
--- a/examples/declarative/particles/allsmiles/spritevariedparticles.qml
+++ b/examples/declarative/particles/allsmiles/spritevariedparticles.qml
@@ -98,8 +98,7 @@ Rectangle{
         width: parent.width
         emitRate: 16
         lifeSpan: 8000
-        emitting: true
-        speed: AngledDirection{angle: 90; magnitude: 300; magnitudeVariation: 100; angleVariation: 5}
+        speed: AngleDirection{angle: 90; magnitude: 300; magnitudeVariation: 100; angleVariation: 5}
         acceleration: PointDirection{ y: 10 }
         size: 30
         sizeVariation: 10
diff --git a/examples/declarative/particles/allsmiles/ultraparticles.qml b/examples/declarative/particles/allsmiles/ultraparticles.qml
index eda1c8f859..9094e83801 100644
--- a/examples/declarative/particles/allsmiles/ultraparticles.qml
+++ b/examples/declarative/particles/allsmiles/ultraparticles.qml
@@ -86,8 +86,7 @@ Rectangle{
         id: particles
         emitRate: 200
         lifeSpan: 6000
-        emitting: true
-        speed: AngledDirection{angleVariation: 360; magnitude: 80; magnitudeVariation: 40}
+        speed: AngleDirection{angleVariation: 360; magnitude: 80; magnitudeVariation: 40}
         size: 40
         endSize: 80
     }
diff --git a/examples/declarative/particles/asteroid/asteroid.qml b/examples/declarative/particles/asteroid/asteroid.qml
index 2ecfc42a98..ea2fabd51d 100644
--- a/examples/declarative/particles/asteroid/asteroid.qml
+++ b/examples/declarative/particles/asteroid/asteroid.qml
@@ -94,7 +94,6 @@ Item {
         particle: "meteor"
         emitRate: 12
         lifeSpan: 5000
-        emitting: true
         acceleration: PointDirection{ xVariation: 80; yVariation: 80; }
         size: 15
         endSize: 300
diff --git a/examples/declarative/particles/asteroid/blackhole.qml b/examples/declarative/particles/asteroid/blackhole.qml
index 57474f955e..7e8a7a9edc 100644
--- a/examples/declarative/particles/asteroid/blackhole.qml
+++ b/examples/declarative/particles/asteroid/blackhole.qml
@@ -70,7 +70,7 @@ Rectangle{
         system: particles
         emitRate: 40
         lifeSpan: 4000
-        emitting: true
+        enabled: true
         size: 30
         sizeVariation: 10
         speed: PointDirection{ x: 220; xVariation: 40 }
@@ -81,7 +81,7 @@ Rectangle{
         system: particles
         emitRate: 10
         lifeSpan: 4000
-        emitting: true
+        enabled: true
         size: 30
         sizeVariation: 10
         speed: PointDirection{ x: 220; xVariation: 40 }
@@ -145,16 +145,16 @@ Rectangle{
 
         colorVariation: 0.2
     }
-    PointAttractor{
+    Attractor{
         id: gs; pointX: root.width/2; pointY: root.height/2; strength: 4000000;
         system: particles
-        physics: PointAttractor.Acceleration
-        proportionalToDistance: PointAttractor.InverseQuadratic
+        affectedParameter: Attractor.Acceleration
+        proportionalToDistance: Attractor.InverseQuadratic
     }
-    Kill{
+    Age{
         system: particles
-        x: gs.x - 8;
-        y: gs.y - 8;
+        x: gs.pointX - 8;
+        y: gs.pointY - 8;
         width: 16
         height: 16
     }
@@ -174,7 +174,6 @@ Rectangle{
             system: particles
             emitRate: 200
             lifeSpan: 1000
-            emitting: true
             size: 10
             endSize: 4
             sizeVariation: 4
@@ -187,7 +186,7 @@ Rectangle{
             system: particles
             emitRate: 32
             lifeSpan: 2000
-            emitting: spacePressed
+            enabled: spacePressed
             size: 40
             speed: PointDirection{ x: 256; }
             x: parent.width
diff --git a/examples/declarative/particles/custom/blurparticles.qml b/examples/declarative/particles/custom/blurparticles.qml
index 238608c002..df0fa18971 100644
--- a/examples/declarative/particles/custom/blurparticles.qml
+++ b/examples/declarative/particles/custom/blurparticles.qml
@@ -75,7 +75,7 @@ Rectangle{
 
             void main() {                                           
                 defaultMain();
-                highp float t = (timestamp - vData.x) / vData.y;
+                highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;
                 highp float fadeIn = min(t * 10., 1.);
                 highp float fadeOut = 1. - max(0., min((t - 0.75) * 4., 1.));
 
@@ -126,11 +126,11 @@ Rectangle{
         fragmentShader: "
             uniform sampler2D source;
             uniform sampler2D blurred;
-            varying highp vec2 fTex;
+            varying highp vec2 qt_TexCoord0;
             varying highp float fBlur;
             varying highp float fFade;
             void main() {
-                gl_FragColor = mix(texture2D(source, fTex), texture2D(blurred, fTex), min(1.0,fBlur*3.0)) * fFade;
+                gl_FragColor = mix(texture2D(source, qt_TexCoord0), texture2D(blurred, qt_TexCoord0), min(1.0,fBlur*3.0)) * fFade;
             }"
 
     }
diff --git a/examples/declarative/particles/custom/custom.qml b/examples/declarative/particles/custom/custom.qml
index 4b75cf6ebe..50de60b332 100644
--- a/examples/declarative/particles/custom/custom.qml
+++ b/examples/declarative/particles/custom/custom.qml
@@ -5,6 +5,7 @@ ParticleSystem{
     id: sys
     width: 360
     height: 600
+    running: true
     Rectangle{
         z: -1
         anchors.fill: parent
@@ -33,14 +34,14 @@ ParticleSystem{
         size: 12
         anchors.centerIn: parent
         onEmitParticle:{
-            particle.size = Math.max(12,Math.min(492,Math.tan(particle.t/2)*24));
+            particle.startSize = Math.max(12,Math.min(492,Math.tan(particle.t/2)*24));
             var theta = Math.floor(Math.random() * 6.0) / 6.0;
             theta *= 2.0*Math.PI;
             theta += sys.convert(sys.petalRotation);
-            particle.vx = petalLength * Math.cos(theta);
-            particle.vy = petalLength * Math.sin(theta);
-            particle.ax = particle.vx * -0.5;
-            particle.ay = particle.vy * -0.5;
+            particle.initialVX = petalLength * Math.cos(theta);
+            particle.initialVY = petalLength * Math.sin(theta);
+            particle.initialAX = particle.initialVX * -0.5;
+            particle.initialAY = particle.initialVY * -0.5;
         }
     }
     CustomParticle{
@@ -50,21 +51,21 @@ ParticleSystem{
             varying highp vec2 fPos;
 
             void main() {                                           
-                fTex = vTex;                                        
-                highp float size = vData.z;
-                highp float endSize = vData.w;
+                qt_TexCoord0 = qt_ParticleTex;
+                highp float size = qt_ParticleData.z;
+                highp float endSize = qt_ParticleData.w;
 
-                highp float t = (timestamp - vData.x) / vData.y;
+                highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;
 
                 highp float currentSize = mix(size, endSize, t * t);
 
                 if (t < 0. || t > 1.)
                 currentSize = 0.;
 
-                highp vec2 pos = vPos
-                - currentSize / 2. + currentSize * vTex          // adjust size
-                + vVec.xy * t * vData.y         // apply speed vector..
-                + 0.5 * vVec.zw * pow(t * vData.y, 2.);
+                highp vec2 pos = qt_ParticlePos
+                - currentSize / 2. + currentSize * qt_ParticleTex          // adjust size
+                + qt_ParticleVec.xy * t * qt_ParticleData.y         // apply speed vector..
+                + 0.5 * qt_ParticleVec.zw * pow(t * qt_ParticleData.y, 2.);
 
                 gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1);
 
@@ -78,9 +79,9 @@ ParticleSystem{
         fragmentShader: "
             varying highp vec2 fPos;
             varying lowp float fFade;
-            varying highp vec2 fTex;
+            varying highp vec2 qt_TexCoord0;
             void main() {//*2 because this generates dark colors mostly
-                highp vec2 circlePos = fTex*2.0 - vec2(1.0,1.0);
+                highp vec2 circlePos = qt_TexCoord0*2.0 - vec2(1.0,1.0);
                 highp float dist = length(circlePos);
                 highp float circleFactor = max(min(1.0 - dist, 1.0), 0.0);
                 gl_FragColor = vec4(fPos.x*2.0 - fPos.y, fPos.y*2.0 - fPos.x, fPos.x*fPos.y*2.0, 0.0) * circleFactor * fFade;
diff --git a/examples/declarative/particles/custom/delegates.qml b/examples/declarative/particles/custom/delegates.qml
index 4b01c66396..960a398fcb 100644
--- a/examples/declarative/particles/custom/delegates.qml
+++ b/examples/declarative/particles/custom/delegates.qml
@@ -75,7 +75,7 @@ Rectangle{
             emitRate: 1
             lifeSpan: 4800
             lifeSpanVariation: 1600
-            speed: AngledDirection{angleVariation: 360; magnitude: 40; magnitudeVariation: 20}
+            speed: AngleDirection{angleVariation: 360; magnitude: 40; magnitudeVariation: 20}
         }
         ItemParticle{
             delegate: Text{
diff --git a/examples/declarative/particles/custom/fallingleaves.qml b/examples/declarative/particles/custom/fallingleaves.qml
index 3572490451..55fa77ffe9 100644
--- a/examples/declarative/particles/custom/fallingleaves.qml
+++ b/examples/declarative/particles/custom/fallingleaves.qml
@@ -53,6 +53,7 @@ Item {
             particle.r -= particle.rotation * coefficient;
             if (particle.r == 0.0)
                 particle.r -= particle.rotation * 0.000001;
+            particle.update = 1;
         }
     }
 
@@ -65,16 +66,17 @@ Item {
         anchors.bottom: parent.bottom
         onAffectParticle:{
             var pseudoRand = (Math.floor(particle.t*1327) % 10) + 1;
-            var yslow = pseudoRand * 0.001 + 1.01;
-            var xslow = pseudoRand * 0.0005 + 1.0;
-            if (particle.curVY < 1)
-                particle.curVY == 0;
+            var yslow = pseudoRand * 0.01 + 1.01;
+            var xslow = pseudoRand * 0.005 + 1.0;
+            if (particle.vy < 1)
+                particle.vy = 0;
             else
-                particle.curVY = (particle.curVY / yslow);
-            if (particle.curVX < 1)
-                particle.curVX == 0;
+                particle.vy = (particle.vy / yslow);
+            if (particle.vx < 1)
+                particle.vx = 0;
             else
-                particle.curVX = (particle.curVX / xslow);
+                particle.vx = (particle.vx / xslow);
+            particle.update = 1;
         }
     }
     ImageParticle{
diff --git a/examples/declarative/particles/custom/shader.qml b/examples/declarative/particles/custom/shader.qml
index 6253679cb7..df0e3660cf 100644
--- a/examples/declarative/particles/custom/shader.qml
+++ b/examples/declarative/particles/custom/shader.qml
@@ -33,21 +33,21 @@ ParticleSystem{
             varying highp vec2 fPos;
 
             void main() {                                           
-                fTex = vTex;                                        
-                highp float size = vData.z;
-                highp float endSize = vData.w;
+                qt_TexCoord0 = qt_ParticleTex;
+                highp float size = qt_ParticleData.z;
+                highp float endSize = qt_ParticleData.w;
 
-                highp float t = (timestamp - vData.x) / vData.y;
+                highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;
 
                 highp float currentSize = mix(size, endSize, t * t);
 
                 if (t < 0. || t > 1.)
                 currentSize = 0.;
 
-                highp vec2 pos = vPos
-                - currentSize / 2. + currentSize * vTex          // adjust size
-                + vVec.xy * t * vData.y         // apply speed vector..
-                + 0.5 * vVec.zw * pow(t * vData.y, 2.);
+                highp vec2 pos = qt_ParticlePos
+                - currentSize / 2. + currentSize * qt_ParticleTex          // adjust size
+                + qt_ParticleVec.xy * t * qt_ParticleData.y         // apply speed vector..
+                + 0.5 * qt_ParticleVec.zw * pow(t * qt_ParticleData.y, 2.);
 
                 gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1);
 
@@ -61,9 +61,9 @@ ParticleSystem{
         fragmentShader: "
             varying highp vec2 fPos;
             varying lowp float fFade;
-            varying highp vec2 fTex;
+            varying highp vec2 qt_TexCoord0;
             void main() {//*2 because this generates dark colors mostly
-                highp vec2 circlePos = fTex*2.0 - vec2(1.0,1.0);
+                highp vec2 circlePos = qt_TexCoord0*2.0 - vec2(1.0,1.0);
                 highp float dist = length(circlePos);
                 highp float circleFactor = max(min(1.0 - dist, 1.0), 0.0);
                 gl_FragColor = vec4(fPos.x*2.0 - fPos.y, fPos.y*2.0 - fPos.x, fPos.x*fPos.y*2.0, 0.0) * circleFactor * fFade;
diff --git a/examples/declarative/particles/exampleslauncher.qml b/examples/declarative/particles/exampleslauncher.qml
index dfb966536a..91641e595b 100644
--- a/examples/declarative/particles/exampleslauncher.qml
+++ b/examples/declarative/particles/exampleslauncher.qml
@@ -55,17 +55,12 @@ Rectangle{
     VisualDataModel{//TODO: Transitions between modes
         id: vdm
         model: [
-            "../spaceexplorer/spaceexplorer.qml",
             "../snow/snow.qml",
             "../asteroid/asteroid.qml",
             "../asteroid/blackhole.qml",
             "../custom/blurparticles.qml",
             "../custom/custom.qml",
             "../custom/fallingleaves.qml",
-            "../modelparticles/bubbles.qml",
-            "../modelparticles/gridsplosion.qml",
-            "../modelparticles/package.qml",
-            "../modelparticles/stream.qml",
             "../allsmiles/plain.qml",
             "../allsmiles/smile.qml",
             "../allsmiles/smilefactory.qml",
diff --git a/examples/declarative/particles/modelparticles/bubbles.qml b/examples/declarative/particles/modelparticles/bubbles.qml
deleted file mode 100644
index 23f0b82d01..0000000000
--- a/examples/declarative/particles/modelparticles/bubbles.qml
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQuick.Particles 2.0
-import "../../modelviews/listview/content" as OtherDemo
-import "content/script.js" as Script
-import "content"
-//Needs OtherDemo to be updated to QtQuick 2.0
-
-Item{
-    id: root
-    width: 400
-    height: 400
-    Rectangle{
-        anchors.fill: parent
-        color: "lightsteelblue"
-    }
-    ParticleSystem{ 
-        id: sys;
-    }
-    Emitter{
-        system: sys
-        particle: "A"
-        width: parent.width/2
-        x: parent.width/4
-        y:parent.height
-        speed: PointDirection{ y: -64; yVariation: 16 }
-        emitRate: 1
-        lifeSpan: 8000
-    }
-    Wander{
-        system: sys
-        xVariance: 400
-        pace: 200
-    }
-    ModelParticle{
-        id: mp
-        z: 0
-        system: sys
-        particles: ["A"]
-        model: OtherDemo.RecipesModel{}
-        delegate: ExpandingDelegate{}
-    }
-}
diff --git a/examples/declarative/particles/modelparticles/content/Delegate.qml b/examples/declarative/particles/modelparticles/content/Delegate.qml
deleted file mode 100644
index ae1dffb63b..0000000000
--- a/examples/declarative/particles/modelparticles/content/Delegate.qml
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-//![0]
-Package {
-    Text { id: listDelegate; width: 200; height: 25; text: 'Empty'; Package.name: 'list' }
-    Text { id: gridDelegate; width: 100; height: 50; text: 'Empty'; Package.name: 'grid' }
-
-    Rectangle {
-        id: wrapper
-        width: 200; height: 25
-        color: 'lightsteelblue'
-
-        Text { text: display; anchors.centerIn: parent }
-        MouseArea {
-            anchors.fill: parent
-            onClicked: {
-                if (wrapper.state == 'inList')
-                    wrapper.state = 'inGrid';
-                else
-                    wrapper.state = 'inList';
-            }
-        }
-
-        state: 'inList'
-        states: [
-            State {
-                name: 'inList'
-                ParentChange { target: wrapper; parent: listDelegate }
-            },
-            State {
-                name: 'inGrid'
-                ParentChange {
-                    target: wrapper; parent: gridDelegate
-                    x: 0; y: 0; width: gridDelegate.width; height: gridDelegate.height
-                }
-            }
-        ]
-
-        transitions: [
-            Transition {
-                ParentAnimation {
-                    NumberAnimation { properties: 'x,y,width,height'; duration: 300 }
-                }
-            }
-        ]
-    }
-}
-//![0]
diff --git a/examples/declarative/particles/modelparticles/content/Delegate2.qml b/examples/declarative/particles/modelparticles/content/Delegate2.qml
deleted file mode 100644
index a05fa348b9..0000000000
--- a/examples/declarative/particles/modelparticles/content/Delegate2.qml
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-//![0]
-Package {
-    Item { id: gridDelegate; width: w; height: h; Package.name: 'grid' }
-    Item { id: particleDelegate; width: w; height: h; Package.name: 'particles' 
-
-        Rectangle {
-            id: wrapper
-            width: w; height: h;
-            color: col
-            rotation: Math.random()*360
-            Behavior on rotation{RotationAnimation{}}
-
-            states: State{
-                name: "gridded"
-                when: root.inGrid
-                PropertyChanges{
-                    target: wrapper
-                    rotation: 0
-                }
-                ParentChange{
-                    target: wrapper
-                    parent: gridDelegate
-                    x:0
-                    y:0
-                }
-            }
-            transitions: [
-                Transition {
-                    ParentAnimation {
-                        NumberAnimation { properties: 'x,y,width,height'; duration: 300 }
-                    }
-                }
-            ]
-        }
-    }
-}
-//![0]
diff --git a/examples/declarative/particles/modelparticles/content/ExpandingDelegate.qml b/examples/declarative/particles/modelparticles/content/ExpandingDelegate.qml
deleted file mode 100644
index e6fcb6dcf7..0000000000
--- a/examples/declarative/particles/modelparticles/content/ExpandingDelegate.qml
+++ /dev/null
@@ -1,204 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import "../../../modelviews/listview/content"
-
-// This example illustrates expanding a list item to show a more detailed view.
-
-    // Delegate for the recipes.  This delegate has two modes:
-    // 1. List mode (default), which just shows the picture and title of the recipe.
-    // 2. Details mode, which also shows the ingredients and method.
-    Component {
-        id: recipeDelegate
-
-        Item {
-            id: recipe
-
-            // Create a property to contain the visibility of the details.
-            // We can bind multiple element's opacity to this one property,
-            // rather than having a "PropertyChanges" line for each element we
-            // want to fade.
-            property real detailsOpacity : 0
-
-            //this bit changed for aesthetics
-            width: 70
-            height: 70
-            // A simple rounded rectangle for the background
-            Rectangle {
-                id: background
-                x: 2; y: 2; width: parent.width - x*2; height: parent.height - y*2
-                color: "ivory"
-                border.color: "orange"
-                radius: 5
-            }
-            Image{
-                anchors.fill:parent
-                anchors.margins: -32
-                source: "bubble.png"
-            }
-
-
-            // This mouse region covers the entire delegate.
-            // When clicked it changes mode to 'Details'.  If we are already
-            // in Details mode, then no change will happen.
-            MouseArea {
-                anchors.fill: parent
-                onClicked: recipe.state = 'Details';
-            }
-
-            // Lay out the page: picture, title and ingredients at the top, and method at the
-            // bottom.  Note that elements that should not be visible in the list
-            // mode have their opacity set to recipe.detailsOpacity.
-            Row {
-                id: topLayout
-                x: 10; y: 10; height: recipeImage.height; width: parent.width
-                spacing: 10
-
-                Image {
-                    id: recipeImage
-                    width: 50; height: 50
-                    source: "../../modelviews/listview/" + picture
-                }
-
-                Column {
-                    width: background.width - recipeImage.width - 20; height: recipeImage.height
-                    spacing: 5
-
-                    Text { 
-                        text: title
-                        font.bold: true; font.pointSize: 16
-                    }
-
-                    Text {
-                        text: "Ingredients"
-                        font.pointSize: 12; font.bold: true
-                        opacity: recipe.detailsOpacity
-                    }
-
-                    Text {
-                        text: ingredients
-                        wrapMode: Text.WordWrap
-                        width: parent.width
-                        opacity: recipe.detailsOpacity
-                    }
-                }
-            }
-
-            Item {
-                id: details
-                x: 10; width: parent.width - 20
-                anchors { top: topLayout.bottom; topMargin: 10; bottom: parent.bottom; bottomMargin: 10 }
-                opacity: recipe.detailsOpacity
-
-                Text {
-                    id: methodTitle
-                    anchors.top: parent.top
-                    text: "Method"
-                    font.pointSize: 12; font.bold: true
-                }
-
-                Flickable {
-                    id: flick
-                    width: parent.width
-                    anchors { top: methodTitle.bottom; bottom: parent.bottom }
-                    contentHeight: methodText.height
-                    clip: true
-
-                    Text { id: methodText; text: method; wrapMode: Text.WordWrap; width: details.width }
-                }
-
-                Image {
-                    anchors { right: flick.right; top: flick.top }
-                    source: "../../modelviews/listview/" + "content/pics/moreUp.png"
-                    opacity: flick.atYBeginning ? 0 : 1
-                }
-
-                Image {
-                    anchors { right: flick.right; bottom: flick.bottom }
-                    source: "../../modelviews/listview/" + "content/pics/moreDown.png"
-                    opacity: flick.atYEnd ? 0 : 1
-                }
-            }
-
-            // A button to close the detailed view, i.e. set the state back to default ('').
-            TextButton {
-                y: 10
-                anchors { right: background.right; rightMargin: 10 }
-                opacity: recipe.detailsOpacity
-                text: "Close"
-
-                onClicked: recipe.state = '';
-            }
-
-            states: State {
-                name: "Details"
-
-                PropertyChanges { target: background; color: "white" }
-                PropertyChanges { target: recipeImage; width: 130; height: 130 } // Make picture bigger
-                PropertyChanges { target: recipe; detailsOpacity: 1; x: 0; opacity: 1 } // Make details visible
-                PropertyChanges { target: recipe; height: root.height; width: root.height; x:0; y:0; z:100} // Fill the entire list area with the detailed view
-
-                // Move the list so that this item is at the top.
-                //PropertyChanges { target: recipe.ListView.view; explicit: true; contentY: recipe.y }
-
-                // Disallow flicking while we're in detailed view
-                //PropertyChanges { target: recipe.ListView.view; interactive: false }
-            }
-
-            transitions: Transition {
-                //The only strictly necessary particle specific lines 
-                to: "Details"
-                reversible: true
-                ScriptAction{script:{
-                    if(state == "Details")
-                        mp.freeze(index);
-                    else
-                        mp.unfreeze(index);
-                    }
-                }
-                // Make the state changes smooth
-                ParallelAnimation {
-                    ColorAnimation { property: "color"; duration: 500 }
-                    NumberAnimation { duration: 300; properties: "detailsOpacity,opacity,x,y,height,width" }
-                }
-            }
-        }
-    }
diff --git a/examples/declarative/particles/modelparticles/content/RssModel.qml b/examples/declarative/particles/modelparticles/content/RssModel.qml
deleted file mode 100644
index edb3ceac42..0000000000
--- a/examples/declarative/particles/modelparticles/content/RssModel.qml
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-
-XmlListModel {
-    property string tags : ""
-
-    source: "http://api.flickr.com/services/feeds/photos_public.gne?"+(tags ? "tags="+tags+"&" : "")
-    query: "/feed/entry"
-    namespaceDeclarations: "declare default element namespace 'http://www.w3.org/2005/Atom';"
-
-    XmlRole { name: "title"; query: "title/string()" }
-    XmlRole { name: "content"; query: "content/string()" }
-    XmlRole { name: "hq"; query: "link[@rel='enclosure']/@href/string()" }
-}
diff --git a/examples/declarative/particles/modelparticles/content/bubble.png b/examples/declarative/particles/modelparticles/content/bubble.png
deleted file mode 100644
index c7f479e9e39ee1d4db3d17783bfc206afd6d953a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3413
zcmV-b4XW~qP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00001b5ch_0Itp)
z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipS_
z6b%TBtO17r001I%MObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakAa8CUVIWOmV~41B
zLjV8_r%6OXRCwCeoBMNB_jScT>*z{C;%yKw8}l%R!3H}ab`n4Gnl_VknzWP7^zZ9T
zf5{(^rqgCRow{{wS{!T~{K8-xgL%s!2_&J%S^eRzBOM*?6#|5U&J2UDbk4cwyT5y{
zz4qSgh{t@`#x{}`{9Y1eS<d}jeeQJLsyl42s{5|02dq45xehJYLoMd2aqS+U-*&&G
zKA_ijPwl!Am;&zFo&=_gqL^Lmo<&jo<qc5nhHZ+XsN!0ZdTkF%+6+8pdq~m{umxBL
ztcd{>1I_}Iz%5|d_Eq4jr0c+#?Yoj@D}&YX;!$wop{{I#SIrm#2D8ZBz&_wPU<a@j
z*l2qVP~`f$FBf^98DIjq30wxgu>GZ^^S~A0rlgq;9`;a%cxVGO-7gE<0lWwtwS7R+
z4qyN<a5oFP4UA{Er}H=2?gIuStpnEC9sv5X*b(3Y@Ck4dIA?pLD2nn?!$J?U^Yt&u
zgKr030KNyj1PmpnN3x68fE%_)B;5kWZBJ!!&hGaD{aO4*V2h;fz)ss+C9O>ud<MK{
z`+eYiQ52((Vgx<N;_Gf^yU2qc1zwZ%U0|E-Dd3W%uYj*?UjS}Ms&@Xa?HQnyR8|-w
zsQ`Lnh&8s?N!kSL1a{lrCuuM6RPJ*IIBxs6q|3Ias)biZSc)<9Feq=k1?;f>eMvvJ
zeJJsK5%>uBJT7}ZUNC8UHVZDZ>-RoP8xWQMdlCX`fyxli**+Rv*(B+@?YAVoW&4bz
z@!AG02@~|7ZeNyVFR(|_&usrp($jJ8Pb8fNJ_D`-V~P72x3_t2(e<5bB6))i3h1%j
zD`~*?7D@YUAC`0!*q_vS0{C~}LrEje47HdcS`WDR9!Upn{{r~2qz$$|m-N1*)3(0`
zZUo?F0ZVc>H|+HLS}G+*n~^kYds@;&413k~B}vDCmw`8c^}wL*cO;E1m6)|2!0r2h
zgSLMIylK0T^r56b#_cajx)Wr-$LjTXTr6#Mab3rgW&)mL;R@FzjoN-C##oz-a@_W<
zx<R{bLTf2>Gcmu{_Aey8nK(TOybGKHuGyXd$`0wV0=AyAET<(+SNXqNk<`r?`FYm%
zI4~{gZaied_UphQNxuT_N;;90OHmYEF`=sm)OM=~;Qdt6Pk<gtCvE?aq>n;QCX1qQ
zW5-*Po&xp&PuuR3biww=0ml0SR1FvE&(y|9PuadH>5T1}81+ZM5#UbP<DY{=UBjWZ
z1Q*<3`&CIlO`M$q-pS&xhPS)6aE1OJ0$#QKePC~Dfp;YRlkHJS?zX^gn^6ZfNhF=#
zl61~?k*x7!;21C*&T)3JP`Dom_5nwe>YfJ9Cgx9d+WFwbe&9{uuk#?!gbhyFzAkBf
z(B1U~Ed{WeDNd5hvYZM%K9h{G9{8c89|70nCBxmaL8}wlsabm`@J90d4cjLJc-NBK
zn~OgL{08`&FvIm#u>*`q`qK7rT(~NNa2r&X%<1b*mc;iAFk<_hq(9ky%Jxx7Z`l5<
zEX((bqL``-UB7>;>H4)326K~RiLZ}<KZn{*)C(Egy;=M}0RL$F`INlX&P~K?-UcpJ
z{J&<LIU_8^6DoJEc|v7`Z-FzCwuPSW174BzMLf2-Mv6{uR+go*`>)vE7CL)c($_)O
zvX1h$_W*wj{5^26T6`8W37oe5d*DP-6t}BguXuvmPot%>x5@~OwwfhP1(!ax{aH?Z
z2{;fBz4tzy5I6Mmh@=-KP1G3PaMDlR9k(Pq{9W9>w|38Q;632Cz`ukl*MZHC+LLIc
z$r89N>3p8~vZOr$<DqQq0>c%}6cM-FV*AC^_1^$zZC7#M%oxuG^bXtZ&!1*vtaoky
z7WiEXqnX71+&|{gaLFOiG(h8;Y1_AKe+hgMU_2seucY2)W@&XGAHBdck`Bbx&u8bx
zfZ0YGX#v|40&8>rXwE+Y{0H#1?Mopnom{;NgXQY=ImGA+a4x)HX9}o~Q#&l01_x4h
zZVO>KpK^ApLlsx1#y<<Jw|zHd>dCnNSxGnRm@#kXIU~3eIzMa}1Wac`kuL_cUr2i1
zlupyU0XmR_%{h4xIB)x6Dy$hdw#asw2E{)Ee@LDFwe4>tjU*=P_4(XxH!1I<?tUXJ
zmgzoS3HyBB_8v*QY=2d!;;rU`09$Q8lU#jO(v8qbH;G8T>_!@ytyFDOO}15iUaUFs
zs2$!0e{qVk(QuY=Nn3$k={il`lLcxau`PLYTGFuXu`at`Pe0Si7WXW^LfiV~RSsY7
z=}#k!N=f4(UZbJ$JJM^MH+*AVed*q=k2~K?Dx0l8XpMYedu~C^pBn|tJvn^2kH$R>
zOl9$7NzX%)1{VXtzF<Iq2+wFxb3x(KX;Dwwgeq}94cxX}RiB%}apq?k&8CO#!Fa|*
zYW$hH3opks=5Zf2JSfvi9?#%qEih2``c@+Z3Q4W(_*5)d0$vRZ?_dDOgC~GlNqy-{
z)Wfmp;zbL(x2tAG-NfqP*R<`~G;?~Y^+=+qH6WX*M2#D*y2G_2X}ucXsT&BEaTNtM
zduubhRcC~(qe!=?!n*}6`c?zUtHGo*>+7!<Oshey(Woh8yCtbVMbT`)aGnV^uCLO@
zjHH3IvRZWySgyJJ3WY$C-o#)wdlHyj0D_HcrqWNJ%th<t1*%BSD#`{*Mq5XFEMJ7O
z->ws~=4z%T4NDqHZNDkJpswVoPi~&b3{Zi1c+E!J8&jCwuzh>Mu%=<MGR4icC_J`G
z+E9hTawsxZBL4Gyk~AP`i=>TN_&1qe&7EI#Sj@NS0$I|K?JdBXPVKWNc=s!kw;|2Z
z^{Hwv)+<5V9h;&fX(inTwoBR_9YCv|KcBQPXn1Fls&BjP-3jLlwC9)QVi-Wu;Cb7Z
zfejgLZL7d=x$5`F$o>?>-ymr>uq!jfbGC;&c7+>_&e_Du=ivi;bE6H-Il>ccfPUI)
zm3^5{UZE}8xZTkJ9qQ<Bfzz~w4m*J76H99zbey#ki*L*hd(->do5pSdd}8~ndP8(U
zTfABBrVRcVIF(%b0`1AqR@wr`xoe&<EGTTROW3|dTdH>{4ccpTP^m0H_QsU<TDrSe
zfL)mrJR4%sQ(3+~rdr9PJ{rqrC@R!#z+u{RiUN3__E2ZCQS9Bz1nX`c;P@2yAfFGX
z$G*$<nrgUN^O_Z1d_%ET6?U6}gTQxe@5oH>xa}*ADfayhkmD+FJiY#{z%kn|O4=@I
zO*PqBX(M!5{Kg2VzL#(vp*@WKxG0JRv0u+%txoOf+SGMADvLh=8-ab2-eg_}bR~E(
zH{5uf^+Hqil?~_()jeSQHA%-J;dvYQ?@Alc1kA1m=<ubZlKw9q@atf~q@<ZN8ZMK$
zK~t!>TqSf}n_OQ^v`d?S{kDGq{2;9F1n{5KhOyl?rnT6Y2IR`j+5QXIAnBL3kL7`S
za{9HhEaya0^{(+!w0etlb~}=;;7_llO|}n8dKGw`wygG)q<^KYE1tX`eQzzHsX!(^
z=V^-(*G7JFEN%1_ZSllqNq3?I>nLSkibvE%4_&~o2Urt=a{zcPGPxn(6G^`VPTC%;
z^Mh{RtEISJLnwI|_$Ba@^b5`bf1)jd_&PCHNn_{QPY>b&9o`)hZ5?qRZPC`w2sXbf
z>E#q_AKL!Cq<1T!<o(1~_r-uJ$JfGP*7lh&sxjMtCFu~bIS(}_m6bG>Y4I%JvMf7F
zW$T}t6<t8CC++M(+6wah$@51f?aQ<L5%{+VH^({^NnJC_!=P_8fIER7+Wt9hS<GxD
zrJ=3Uxj<VsJ4#z2K3f^1n^#mq>8hYf4}V?q`>uf95lPP_D_sNL3O;>qdweNw|G)<5
zL_W&0EYfIrS<>qvA6rA9E&^W?aYd@IQQG3FyR_AwWi5RwUE7}8ixZVfd{-Fge%sGV
z+H8AV(x<lH1^)N3%jLUaLVni=?37f!F!7zF%$aEPE{9NEr!7txP02kKkAV621O^i0
z8v}Af39X_0?M_1Mr0ox)1zMRGChqqoX+Z3>{c;MC1DVMW&{mR6q#ZTJ{3|nc1N7G#
zv4ge;Qix5*aOV?VA4HYD@~_NvA|@SPnp$Uj2-qE|&4E;9Tl2Tx#JQQ5&ZyCvzmr8@
zO(=blCe0P#R;Pup=u1;gfUJuwYxnI9XV_x95-twWe&uCtrP#`~Wn}Q<=|v3Fmbnfm
zt&UY8(|qOjQG1jt_2Oh@kp7UEzPNpLQJJaKbTY<W+AmJ}VZZY)(wSL}ug<PSkM4=R
r=dy*sQXjk_ZoWtV->K?*+;0B=FyF&@_|ZP900000NkvXXu0mjfm<5ue

diff --git a/examples/declarative/particles/modelparticles/content/script.js b/examples/declarative/particles/modelparticles/content/script.js
deleted file mode 100644
index e8ef93a847..0000000000
--- a/examples/declarative/particles/modelparticles/content/script.js
+++ /dev/null
@@ -1,27 +0,0 @@
-.pragma library
-
-function getWidth(string) {
-    return (string.match(/width=\"([0-9]+)\"/))[1]
-}
-
-function getHeight(string) {
-    return (string.match(/height=\"([0-9]+)\"/))[1]
-}
-
-function getImagePath(string) {
-    var pattern = /src=\"http:\/\/(\S+)\"/
-    return (string.match(pattern))[1]
-}
-
-function calculateScale(width, height, cellSize) {
-    var widthScale = (cellSize * 1.0) / width
-    var heightScale = (cellSize * 1.0) / height
-    var scale = 0
-
-    if (widthScale <= heightScale) {
-        scale = widthScale;
-    } else if (heightScale < widthScale) {
-        scale = heightScale;
-    }
-    return scale;
-}
diff --git a/examples/declarative/particles/modelparticles/gridsplosion.qml b/examples/declarative/particles/modelparticles/gridsplosion.qml
deleted file mode 100644
index 9232eb426d..0000000000
--- a/examples/declarative/particles/modelparticles/gridsplosion.qml
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQuick.Particles 2.0
-import "content"
-
-Rectangle{
-    id: root
-    width: 240
-    height: 240
-    property bool inGrid: false
-    ParticleSystem{ id: sys }
-    Emitter{
-        system: sys
-        id: burster;
-        emitting: false
-        emitRate: 1000
-        lifeSpan: 50000
-        emitCap: 100;
-        speed: PointDirection{xVariation: 400; yVariation: 400}
-        anchors.centerIn: parent
-        Timer{
-            interval: 1000
-            running: true
-            repeat: false
-            onTriggered: burster.pulse(0.1);
-        }
-        Timer{
-            interval: 2000
-            running: true
-            repeat: false
-            onTriggered: {inGrid = true;}// sys.running = false;}
-        }
-    }
-    ImageParticle{
-        system: sys
-        source: "../trails/content/particle.png"
-        color: "black"
-        colorVariation: 0.0
-    }
-    GridView{ id: grid; cellWidth: 40; cellHeight: 40
-        model: theModel.parts.grid
-        width: 120
-        height: 120
-    }
-    ModelParticle{
-        system: sys
-        model: theModel.parts.particles
-        fade: false
-    }
-    Friction{
-        system: sys
-        factor: 5
-    }
-    VisualDataModel{
-        id: theModel
-        delegate: Delegate2{}
-        model: ListModel{
-            ListElement{
-                w: 40
-                h: 20
-                col: "forestgreen"
-            }
-            ListElement{
-                w: 20
-                h: 40
-                col: "salmon"
-            }
-            ListElement{
-                w: 20
-                h: 20
-                col: "lightsteelblue"
-            }
-            ListElement{
-                w: 40
-                h: 40
-                col: "goldenrod"
-            }
-            ListElement{
-                w: 40
-                h: 20
-                col: "forestgreen"
-            }
-            ListElement{
-                w: 20
-                h: 40
-                col: "salmon"
-            }
-            ListElement{
-                w: 20
-                h: 20
-                col: "lightsteelblue"
-            }
-            ListElement{
-                w: 40
-                h: 40
-                col: "goldenrod"
-            }
-            ListElement{
-                w: 0
-                h: 0
-                col: "white"//Hack because add isn't working well with old stuff
-            }
-        }
-    }
-}
diff --git a/examples/declarative/particles/modelparticles/package.qml b/examples/declarative/particles/modelparticles/package.qml
deleted file mode 100644
index d374a93446..0000000000
--- a/examples/declarative/particles/modelparticles/package.qml
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQuick.Particles 2.0
-import "content"
-
-Rectangle {
-    color: "white"
-    width: 400
-    height: 200
-
-    ListModel {
-        id: myModel
-        ListElement { display: "One" }
-        ListElement { display: "Two" }
-        ListElement { display: "Three" }
-        ListElement { display: "Four" }
-        ListElement { display: "Five" }
-        ListElement { display: "Six" }
-        ListElement { display: "Seven" }
-        ListElement { display: "Eight" }
-    }
-    //![0]
-    VisualDataModel {
-        id: visualModel
-        delegate: Delegate {}
-        model: myModel
-    }
-
-    ListView {
-        width: 200; height:200
-        model: visualModel.parts.list
-    }
-    ModelParticle{
-        x: 200; width: 200; height:200
-        model: visualModel.parts.grid
-        system: sys
-        clip: true;
-    }
-    //![0]
-    ParticleSystem{
-        id: sys
-        anchors.fill: parent
-    }
-    Emitter{
-        system: sys
-        width: 100
-        x: 250
-        speed: PointDirection{ y: 40 }
-        lifeSpan: 5000
-        emitRate: 1.6
-    }
-}
diff --git a/examples/declarative/particles/modelparticles/stream.qml b/examples/declarative/particles/modelparticles/stream.qml
deleted file mode 100644
index 0938f17cd4..0000000000
--- a/examples/declarative/particles/modelparticles/stream.qml
+++ /dev/null
@@ -1,276 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQuick.Particles 2.0
-import "content/script.js" as Script
-import "content"
-
-Item{
-    id: root
-    width: 640
-    height: 480
-    Rectangle{
-        anchors.fill: parent
-        color: "black"
-        z: -1
-    }
-    Item{
-        id: loading
-        Behavior on opacity{NumberAnimation{}}
-        anchors.fill: parent
-        Text{
-            anchors.centerIn: parent
-            text: "Loading"
-            color: "white"
-        }
-    }
-    ParticleSystem{ 
-        id: sys;
-        running: true
-        startTime: 12000//Doesn't actually work with the loading time though...
-    }
-    Emitter{
-        id: emitter
-        system: sys
-        height: parent.height - 132/2
-        x: -132/2
-        y: 132/2
-        speed: PointDirection{ x: 32; xVariation: 8 }
-        emitRate: 0.5
-        lifeSpan: 120000 //TODO: A -1 or something which does 'infinite'? (but need disable fade first)
-        particle: "photos"
-    }
-    Kill{
-        system: sys
-        x: parent.width + 132/2
-        height: parent.height
-        width: 1000
-    }
-    ImageParticle{
-        system: sys
-        particles: ["fireworks"]
-        source: "../trails/content/star.png"
-        color: "lightsteelblue"
-        alpha: 0
-        colorVariation: 0
-        z: 1000
-    }
-    ItemParticle{
-        id: mp
-        z: 0
-        system: sys
-        fade: false
-        particles: ["photos"]
-    }
-    Component{
-        id: alertDelegate
-        Rectangle{
-            width: 132
-            height: 132
-            NumberAnimation on scale{
-                running: true
-                loops: 1
-                from: 0.2
-                to: 1
-            }
-            Image{
-                source: "../asteroid/content/rocket.png"
-                anchors.centerIn: parent
-            }
-            Text{
-                anchors.bottom: parent.bottom
-                anchors.horizontalCenter: parent.horizontalCenter
-                text: "A new ship has arrived!"
-            }
-        }
-    }
-    property Item alertItem;
-    function alert(){
-        //resetter.active = false
-        force.active = true;
-        alertItem = alertDelegate.createObject(root);
-        alertItem.x = root.width/2 - alertItem.width/2
-        alertItem.y = root.height/2 - alertItem.height/2
-        spawnFireworks.pulse(0.2);
-        stopAlert.start();
-    }
-    focus: true
-    Keys.onSpacePressed: alert();
-    Timer{
-        id: stopAlert
-        running: false
-        repeat: false
-        interval: 800
-        onTriggered: {
-            force.active = false
-            //resetter.active = true;
-            mp.take(alertItem, true);
-            centerEmitter.burst(1);
-        }
-    }
-    PointAttractor{
-        id: force
-        system: sys
-        pointX: root.width/2
-        pointY: root.height/2
-        strength: -10000
-        active: false
-        anchors.centerIn: parent
-        width: parent.width/2
-        height: parent.height/2
-        particles:["photos"]
-        physics: PointAttractor.Position
-    }
-    Emitter{
-        id: centerEmitter
-        speed: PointDirection{ x: 32; xVariation: 8;}
-        emitRate: 0.5
-        lifeSpan: 12000 //TODO: A -1 or something which does 'infinite'? (but need disable fade first)
-        emitCap: 20
-        particle: "photos"
-        system: sys
-        anchors.centerIn: parent
-        emitting: false
-
-        //TODO: Zoom in effect
-    }
-    Emitter{
-        id: spawnFireworks
-        particle: "fireworks"
-        system: sys
-        emitCap: 400
-        emitRate: 400
-        lifeSpan: 2800
-        x: parent.width/2
-        y: parent.height/2 - 64
-        width: 8
-        height: 8
-        emitting: false
-        size: 32
-        endSize: 8
-        speed: AngledDirection{ magnitude: 160; magnitudeVariation: 120; angleVariation: 90; angle: 270 }
-        acceleration: PointDirection{ y: 160 }
-    }
-    Item{ x: -1000; y: -1000 //offscreen
-        Repeater{//Load them here, add to system on completed
-            model: theModel
-            delegate: theDelegate
-        }
-    }
-    RssModel{id: theModel; tags:"particle,particles"}
-    Component {
-        id: theDelegate
-        Rectangle {
-            id: container
-            border.width: 2
-            property real myRand: Math.random();//'depth'
-            z: Math.floor(myRand * 100)
-            scale: (myRand + 1.0)/2;
-            //TODO: Darken based on 'depth'
-            width: 132
-            height: 132
-            //ItemParticle.onAttached: console.log("I'm in"  + x + "," + y + ":" + opacity);
-            ItemParticle.onDetached: mp.take(container);//respawns
-            function manage()
-            {
-                if(state == "selected"){
-             //       console.log("Taking " + index);
-                    mp.freeze(container);
-                }else{
-               //     console.log("Returning " +index);
-                    mp.unfreeze(container);
-                }
-            }
-            Image{
-                id: img
-                anchors.centerIn: parent
-                smooth: true; source: "http://" + Script.getImagePath(content); cache: true
-                fillMode: Image.PreserveAspectFit; 
-                width: parent.width-4; height: parent.height-4
-                onStatusChanged: if(img.status == Image.Ready){
-                    container.opacity = 0;
-                    loading.opacity = 0;
-                    mp.take(container);
-                }
-            }
-            Text{
-                anchors.bottom: parent.bottom
-                width: parent.width
-                horizontalAlignment: Text.AlignHCenter
-                elide: Text.ElideRight
-                text: title
-                color: "black"
-            }
-            MouseArea{
-                anchors.fill: parent
-                onClicked: container.state == "selected" ? container.state = "" : container.state = "selected"
-            }
-            states: State{
-                name: "selected"
-                ParentChange{
-                    target: container
-                    parent: root
-                    x: 0
-                    y: 0
-                }
-                PropertyChanges{
-                    target: container
-                    width: root.width
-                    height: root.height
-                    z: 101
-                    opacity: 1
-                    rotation: 0
-                }
-            }
-            transitions: Transition{
-                to: "selected"
-                reversible: true
-                SequentialAnimation{
-                    ScriptAction{script: container.manage();}
-                    ParallelAnimation{
-                        ParentAnimation{NumberAnimation{ properties: "x,y" }}//Doesn't work, particles takes control of x,y instantly
-                        NumberAnimation{ properties: "width, height, z, rotation" }
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/examples/declarative/particles/snow/snow.qml b/examples/declarative/particles/snow/snow.qml
index b988c53f4a..39e322fe84 100644
--- a/examples/declarative/particles/snow/snow.qml
+++ b/examples/declarative/particles/snow/snow.qml
@@ -61,14 +61,13 @@ Rectangle{
         id: wanderer
         system: particles
         anchors.fill: parent
-        xVariance: 360/(wanderer.physics+1);
-        pace: 100*(wanderer.physics+1);
+        xVariance: 360/(wanderer.affectedParameter+1);
+        pace: 100*(wanderer.affectedParameter+1);
     }
     Emitter {
         system: particles
         emitRate: 20
         lifeSpan: 7000
-        emitting: true
         speed: PointDirection{ y:80; yVariation: 40; }
         acceleration: PointDirection{ y: 4 }
         size: 20
@@ -81,15 +80,15 @@ Rectangle{
         anchors.horizontalCenter: parent.horizontalCenter
         UI.Button{
             text:"dx/dt"
-            onClicked: wanderer.physics = Wander.Position;
+            onClicked: wanderer.affectedParameter = Wander.Position;
         }
         UI.Button{
             text:"dv/dt"
-            onClicked: wanderer.physics = Wander.Velocity;
+            onClicked: wanderer.affectedParameter = Wander.Velocity;
         }
         UI.Button{
             text:"da/dt"
-            onClicked: wanderer.physics = Wander.Acceleration;
+            onClicked: wanderer.affectedParameter = Wander.Acceleration;
         }
     }
 }
diff --git a/examples/declarative/particles/spaceexplorer/content/helpers.js b/examples/declarative/particles/spaceexplorer/content/helpers.js
deleted file mode 100644
index c38c4c0eed..0000000000
--- a/examples/declarative/particles/spaceexplorer/content/helpers.js
+++ /dev/null
@@ -1,8 +0,0 @@
-function intersects(item, x, y, e){
-    return x+e >= item.x && x-e <= item.x + item.width && y+e >= item.y && y-e <= item.y + item.height;
-}
-
-function direction(x1, y1, x2, y2){
-    return Math.atan2(y2-y1, x2-x1) * (180/Math.PI);
-}
-
diff --git a/examples/declarative/particles/spaceexplorer/content/particle4.png b/examples/declarative/particles/spaceexplorer/content/particle4.png
deleted file mode 100644
index bc95b703c1da0dffae27cd4a2a35d26ef73decdd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1799
zcmaJ?dsIw$9G~4H37Hy_!gZV0qULF4nyb-c?jV}UPEk%HO*6N;YVN(=xufYpHDoK~
zaXKl<#@ZH39)&C$wU*L`l0$^mqT&#?C9muq#Qw4EJ?Gxv@B2HS&*%I6otwKrHD~1T
z@xvJm#>k+#u$o>0>pN^H{WYeh_R@<hrHG(H@mMNZOCpQ_JsyJqK?ZFcqDHj(l%xj4
zm%*?B(Xa?ALKzI{a05qc#c<39f@U)qzJ6vxt4lyAAO?v;F&Wr%;uHv=dKnllQu369
z9EnHgrjkf#swzyEnxK>FLBCmmuNk5R3<#wK%!WkF2$^NzdtHd$TaURQ@E$@X$iNRl
zMJN{la-2i}5r^lk<B55In9t!0XGkOxFF?TK^SC?#moM<<OCX^D;_-lw4@i3>^|6o|
zp8e4mZOOoRiXtE`H#s?(lPu)mWE__-l}fD|0)aP;@HVDkl-BHx89fFRV8o~+QG!Bo
z46rI{V{j8C1L;UVq+lRE$zsNjWugnlHERhjpTo1JGyqg8{~u~Fd_o&3HS#&${}eWc
zr4R^LjTmtgsiPYg>tS_8Kynh%QaBlg<B0=RTo8{_xG^3l0C}hgP-=B3X0_krl}acG
zGg4YihXlbgkXGQJs2&QCC`2$U^x?@xQa)e7lk((ZsYE37fhA&*Tqqgf!nn?4Krm{6
ztN+ZUDT8pWqhKIt&oDxw%Mtx-5;p+vQ-;vNV-XLk_mQg~JQm5ITrM39*V@>BHG1HP
zo*wJ=)7a9+r@==sdfG{PtV^of0_fY476b=`nXm8L5{X~-AD#V6zA-_4oz;5D0;6}b
z?4tVKo%+I_ZDu5eGQBUcHjB{;ab>gQiav>>Oz1wd$f-waTpk;DRWUtkaiMhLgq+`H
z!WZ3@MouK6IR+k@GomieQ)LtUo0oG3=C5HDWM-)PZY_1Ljo`7?Rd0B?a>wXnneC2I
znft)q_7B=+=W}v^M-Hi$`2jAyFAai_)sg;>?G6kV54mA^T{iXFo!3sxQMN9Y+hv|U
z&Q;9TIq>*A!dSne)y=XdI{Zll@wGWGN2xh9N@EWV>+|Yk`!L@G&gF){f+=K3zyFiD
z1lv5-Y$@_y8Bzo`Wld&h*rr)l)VgU}G~I3UikX>iLlSZS{=g@BT_qdCU8|zqgPHse
zzZ-WO*A$oM-nX1;&1Ro_r37V`H`3-AKuECt&t?6MWiit{J?yFi(@neTq@{W6oEpok
z6^VX#Q_fwRxOvWO*nJ<<^~{85XL1^3zw-e9#l@n(zS?y4%V#N`hU_cAc>n&=2VJ{|
zUEJTm6o#7)zd6m;j7jcTxJdP9tW#J^R?^|!x#%M=FxtiCD0x5q%6vruQ5W)1Zrl3D
z)@Ns>8PD&&2p)R7pgr$kXqsd4PdjWj?Rh8Q#E*5k&u-tlB|p+qjg39%YFFoXd&u#|
zhFsDIb1(RY_5AOdHT`Z9@zQcHmd%Y?Y%*I|RCFlr?D{4(R6c9wjIocpkB#Ar_rI#E
z>gq1{6gMXb(c;G<!HE)6y{Vm(Ra%@RobJCR_*B^T7WKPl9S|s}93CYo#G5*6i>}@z
zVr;9r?xlIn9wS_sJ!Ws+g_JE%Rc#*IBJIkX>NEP*9&d4}xs?B~;0GN)x6muNP_ydk
zrVN&QWq7q9*Ze56=GwW6NtR==ZLKe>9-5<Ostzr&dAe(oZ4a@dsi%7#Lvv|fwcc%^
z;B9*S+L0bRH-;*<5}mep8kRcL6x+JrFf4Y8*zI{)yvlLvcjEQS+?e;GBP%wgm1M-c
zPOA;y*~44ZzkRd|b#QxbBI70B`$$8@o@MTbOIn=Cu5lg0O1p92Ub$Pi&A!+7VD{UY
zWm!4kf$pOxvu!%tO|s)rtz)r9qe^ido(7-HDqD7e)tj`#0lf{ER;2S9r0e#&4XJD%
zu_1QrYL8XaEv^3MuX`NMb9;#Kx4u8(_~ZQi&gN}Pp03Zo-~VdLX@)PO(C#tgIcfbh
M1u0Z;MPRh$A2}Ss-2eap

diff --git a/examples/declarative/particles/spaceexplorer/content/powerupScore.png b/examples/declarative/particles/spaceexplorer/content/powerupScore.png
deleted file mode 100644
index e8c368aea745f7035734e6145b7e970945acd3e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 83169
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
a+Y!>K7RknWW>f!r$r`FUD&<O6VgCb<kRSB`

diff --git a/examples/declarative/particles/spaceexplorer/content/powerupScore_gone.png b/examples/declarative/particles/spaceexplorer/content/powerupScore_gone.png
deleted file mode 100644
index 4076327a1aa5ef44bd38a1ac1f78b2fca5738633..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 140
zcmeAS@N?(olHy`uVBq!ia0vp^DIm<j1|$m}O$`B3oCO|{#S9F5zCb*O@!q#N;Xpw<
yPZ!6KiaBo&8ZrWThZcPG&*j!%0AvyY8kRH8S;D}$taNH0NVTV{pUXO@geCxeb{iuA

diff --git a/examples/declarative/particles/spaceexplorer/content/powerupScore_got.png b/examples/declarative/particles/spaceexplorer/content/powerupScore_got.png
deleted file mode 100644
index 4297245d49b087348d737b4ce4fb3761a62c2f0f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 81528
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

diff --git a/examples/declarative/particles/spaceexplorer/content/rocket.png b/examples/declarative/particles/spaceexplorer/content/rocket.png
deleted file mode 100644
index a171610b03e3a0e2aaa6e681fc590afce841e929..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7315
zcmaKRXE<E%-ZhDch-e8x^bkZFgJAS-^dQPa31i48GZ?*$9w9_;(SwK}L<u7LC{acq
zEqW)6-pecJIsfy#AKvrs>)QJ+*IMgW?sb3K;kw$Y_edE?2?z-8fz_1su1Egs7eYdO
z{pFLMS-2kPU6qYp^^rEN9+oaJ0(ons6^s?^XlV=6gIQX8Isbx55fI#DhZ`8X8f$5S
zph!mn%fA=_Pe-R~HUWW@tf!MD)E?%_Y6Y`}Bc$2!b&c$-aBFFHBT+4YmXjjvHC)Zx
z1*Y$<Z2<MQhe}wp%gV4yd4jG59AU1Ote%bz2o%Uun*Cq8pzHbHZ9#U{e?eUBrP=={
zDPt{NRz;)>j8#+szz+pH1F$|55)cv=5fc;RV+8_)0D=IZpb(H>NDL$l1OWi7|9;r7
zqq$hyfb^79{vGRjCC&cY)zt|kDCptgA>bh_fON4H6q1mT_^SZ~@?RtPQC<jFOHY0T
z>hV7cN-z}E1@7buM<Q7NDq310-CU*FuQUCh5*(fWBa1-&yG_>(6ZEun5)={u{4MDp
zpqAGEAL{7%A2iBU5B9(L{y&9L23}4uK|L4>>E;5xJ~*4le?vKe6kTAJu1FUHB+}uZ
zF6zEUx*}1pkxs0N`l75_mQXn2@A_YOEiDijfpWD(Kw)4dY4&Rc0XW<mq#_~@lmLnf
z2?K@2goKm<3Myh^DoRQc%HpEWgaBd+|8SL%P&Y>y!u21n_5X5#|CRgK3XV?Kk(FRB
zaCexsiVM<_^<O1};Quuj5taX{_iwKCf6oQ*U%7(U$q4>E*#GOG|Jk~B&)?~PY<s=<
zkMUuMYqz^x+d8*)d-wWA-3BYk8@!%wOY@4cv2~mF$GcP`H%pJkMRHB@V=1Xgtij;{
zx|Hr^_aA*rBT9Sql%voJ{6~G>pjNLPX2ck0pe8{{ZKQ|!6hWON-x)yIt-x0ffT&od
z4Di+CXD+9f{ASLbk%GB!t!j)W?9=r6*G$PH$)n#Z>3iub>9hxr@XHJrJI(n4brWJZ
zT#CKbH%coOtk%t6FT^Is?X4^I&Y1Y-e~*Yk)SRRG=bmI#Ojp%ZJTq~>_d7C1@4YqH
z-7yk7zxd&J{BAv!(**r(qZ622;gV>eNRVYt2-nx<%~CWg=r-$fvfAO-woD|>FX~Gw
z%&#DelHpY&BHH<sZNW7~$zQ8BJ-!Z>a43KsmSdhfO|9mHi<OufpDbLuY*dmx7%Q@^
z#DKnbHCx7$<<&U8wpe&BIJ|V)kW>2EWt&`5?e1ICjNA~TlM^JzEdf;a{zh2zrdQ{?
z^H)19Kv4hi5!uuvl44m?5N+_<?S)iHh|%Q<w9i=Xr`PHjX0!#OW}l->%VizT#&<hG
zwFtRZb*d$)#zK{Oeub<QrY-hyJlH<IIWj<+u|)1{8_-RL1x0>KSf_fPyZdI#&I6Y}
zo~!UKYjkz6FL`?Kk8urhzpiyO%Jae|*}NhQ4D8%Bup_i(s+t3WNT(-Wu1iH$*oG#^
zh7FvyJ=&ZnlQ2NP`g6P}AD`!H_`^E*K^z|imc3VkP!GJm@Ir54nyz%efi+>34fC#t
zSr9kd6HsuexUhZ98>Bnnc&N5Ol$=+?*GeC+$kE$5ABiZ6))H=~h>rS_v-{A&PQLS@
zn|XRcNpMetv=rbp>`X^<&}?JC904W1BhcG4mVWjylU8ru<wqChlCA&L*r#FY)=`<R
za+NQkYD3MeFtg?M?J$J2TrSlhWG#l1UO+Sk_DT<6a_N^eH%J!G0P2-#fgn7`WrD&_
z@t}qG4`}vpF`WdV%2BV57yHA*ANwCwsjgMscEx#*nUgsOY1}tWn%8_&K`)@?>>RY&
z!7-IGzV<}0&XJ|mxA%D{P2;A6`GG~JSF?&_D_}d^!+%>FA?X}Yz?>C?CWDjW7RzFi
zx22t)9UZdToc7!R#`<m>;gvQ^e~#w=K2)gZx1dZZ4(7WUo34w-$?nWqEQWX3sC_aL
zb8MyYD<1n}n{jJpx8+X1j@S01=)L8-t@$auw<so9$E5WxsZw}P_cr2v1;ND;dNCMp
z%`T43x@bF+v&VS%*Sh6Sp$2Ow)dGRTQit)jDYdL81uQiWpX>`tE|9<bNk2U@USGf;
zGwve+@Lrs1JceAJcKCO<4WURZ92wGOM-G)gi|diRmS{MSLheR97IWS(t5yT<ePx`i
z6Y;Ko80WL$C)l`<A4$&TyHj+e$jAyKe{|&QYx4FUzOKb-F7dbm>6c8t;x)P9Pgv=h
z=4R^WDUJa=cj_ytW?J;=lWJFtmI~gjzt@9MP?YjV2!6dQ-Bw#s<hzuEcbadv{Q2vY
zmua4sYb=r9#YiWNfNd*bp-LSpGAkJ^)jMxWq0`Msg<!hj5IAgj)~52!8ON5_^dtx=
z;~IgOSn8j1j@jiGcYn8L_Tc`8+?UZPJpIQJmhI#F6(ldm7Ju(?TUb?e(7c=<l1Q(5
z%_Ht-6OPjF*8EeLdjtPoio^ZAVEv=PdB)j|`v-HtZeBmy6-jQMGMwWCuc<tY^exGE
z->DjXbgdgV+o}lk)2B2gSXS8|7N+7<DYQGgW?i8i>p+eN;Hl5Pq|gp4Z>F2ZmzQCC
z-!rPmG^famyCq$rOeM<%`JB%s#21O6vtMbCoL&fSKasY8Mou~u3)+{rp&A}0`%F4|
zNs^ZjvnR5?{YkCI=xh|~vk2eNr98P;$WhVVU0hWs0X7$F`Jn;$DN5Of3maqSB)MI0
z-qSP49u5vym(lACMm*GO-IChep6@9`;wkYylSL9<zJkQ>bj#Hgsq=me56#!&D{HhD
z4MxN}#*{*RW?U%*>*rVtd&{tEQ=i8rAMq2Zop@f2r>3F@7Z)1O)6UbP>$6VH!%3yB
zR~Hm0DxVt9{y5?{eutvvYT~)mpz?;<JWuyUcO807KxT)xvF&n)ctt0xgZ>Q4BT$k(
z$+T9y6wyJ~IaujC+cdQKJ>Pa&+<BHH-e=u2P~{dw&Tx_(FWIx&fwY)T=@O|Za$mcs
zm`CKyH)rR6lSakX7koPe+wYm8^K&oMm%6kfsyH%~(R=q<GJIOo%-aep?iwdM@6C<s
zxuA-_R<4TFk)7Vu{4j^RN3$UTVI_qI1F}u|g{2@+E1h6#048<Z)^p~i3?_W1Zdvv`
zR)@_sU}cTB+e(rrSV65*uUy1&i=N5W?u()<_Onu}2m?JiOCfuZIGcu6W_UGb$(u%B
zotlU+Q9WEGw_P`1KIzUWxT~|DLwu55Yv4!F?;QP6+#eN#=+w*)83Pb%Pv%!KKp5o_
z{XVfZSd*c{8ccj6@>?D_Vg>FxCtCDCT~3N}-<uiEFz0i_!ahh>Shlf7tthzg#kcXq
zMAMRli5vzHYu?0XrW$~-#zZtvvQ&Doca;)@Z6$<BDRu^@k6X-q4$6=L$CX{uw;OjY
zy^WoFN<w;@<dY3;f1rPW9eoam<TwXx7L^}dVCg`#Q8;=&sdFWUm6Gi3+@>6{3q4$C
z7+Mk3EqURj>@kSvWE_+2I({uznD;AkvQy!?gq6EpMCv>J;dPp>{1`-aAO3vq>J_@`
zV0|z%{3e=?I^iQP^XAEAVpbR3U>wXHJ>J{PAOD0W2d`h0U~C32FE4M$G+gk#ysI5!
zqET;d14Dlhp;>h+l~A4a(JT=G52Z+Mp(XOU@rw^>4e7oZ>8j6rdE4sX)dym!<6+#K
zfcANKXbfeN??>)22Lg<Z7kLXMTU&c0jU&Nxi99_4wp&D*Pr4m0-w@y2AaWPe8piVJ
zkW?Cy&4-vH1F9(PSW0NHfh#<|7SJqV3hLzhQh7123wIaUZ$XxBImP6OOfn6tI8VUe
z*XYZ;X6Ln}L~>|3W9M>q5_;~%#yPervF#35ZNY5^GFvD_aFCEr;joG%aWEa3)uKRw
zx{Fw;A{-p|31g!76A|?Qh-bG(-!<y*Wz?Q8&obH21$Gpp$O&JUl;Nm4gq+i}aa@j)
z%}}mE{*b1j4;&iw7%(>UIX90pHYc%Z&tRZQycp#Pc}$ty`zC}SpCgr!b1z*m--@yW
z;~bd~*JJ$$v%iQXijE2Zw$pm*b0-Qvn;AVezwDyQ&STXQp695?47G!#N=PECax3L{
zLaUN`=!#J!YyyeenJa%tnH6;N*yU{;WS$t@D$uPR9epXt!%;8JCQ4ip3ZRdtI%dxA
zpYfFA=QR0tE5}WMjAYI|?-=q2BOTEQ(a1~SfPXhvkENE%@R|A=@6%*WY(yfAm0+v|
zapueMrb4F!6C{d5oVYpf)^}`@P}J{ni2Ao>7R0KvhD<hr<Q^OoH6;5aG7jlQ%sYIC
z(%vOW806-p(tA+T$ATTAX8TPmy{#U#Nxo{_$jx2GdlzcP)^I#ct0@`iMqa|vV07F%
zu3*xI=L(gx52XI+DM{X^{~DPQkN^E+)eL{=$xyP`p1UYz!urRXfX2Msy>)1#g&Ltx
z9p84dRNq*B$1uXjxcaVVX9jT`Zaz$A2_RQfk~l$i{GnLvx^oy}GTg$eDR?Muj<FpC
zv`4vf5w)9G=g_@SZy<SWad`Vqm%illAzoW)&OHLM?pRZE)109##5v=Fv6;Ql_ZeEn
z8(~6knnuY$xA<^NWi9Wzi?s48UuQflFf8cq8YFEl>Buus_e2vW^3vCXD#~&>zPq45
z;KkOn{3a(Y&d#bE&p9ZE)(&DD`Y_XAL&M1vMFI%eFwN}C0fR=#3r(AT^^bYh&d!NB
zv24UU0c~xf6I0B$DYllPkm!4|Cuv+Vs6(W-*>-L~hE1db8Oua0pw{qF!g3%UeNs?8
z<-1Q8Oz3~Q8FoB(-xgkddcL2!$8kYt&xBoS`zU0ZJGw^2MX$bW?nd&SaZ)GW+{PiV
zr(<SMBP5YD`eNU7W4ao>{o}I5A>JF>@oHGU))#g{Kqvlr*iOD+sz|UzguYb8c;)Rv
z$oM!X?%{LBw2!CfJ;2P;0SGOC>a`9~thyy6U?3JqqFOfvgVnyUkBokHnxT!V7;rb5
zpp7>|R1w9%404?~NQ39x&;!xX;%|>mCTMEh1PU<nt4pSsv8YuyZ8jof=xWEEdd~no
zLi5?@{K^ZMUlPSrZE+FzjXpfIitYc=**y7vN(B8X>wTpXYl?+A6#ebjIwaXMhVlqn
z9`qxql|ETxa`D8NCloIUOlzc|c{)*_5*)8c79EW`?#E2^oxeJ{4X+N_-(NmPzSOY@
zT;en#)^_TXl-VBizxZWw<vP+wN%AQvsTP43k2SKgLBxt{({bD>F-&%^c(-CNr2~!3
zpL|3~#C!muFQHNAX;*z@u)!%H&?7wkd2VPfm*uRp1LAnJXyJd+d|Rt3=pj+fO6nZ9
zv`8&KlN&Cs*VKBqGq(Ny%w-p}SETk*r{U5uq4Z=RzQAjK?QXibH&aJ+<W6gc_P_>=
z@wY6t+uS=~Z-{p`dt}RHqc{Gy>#n%0k9(4PLHDD}X~*9#L(a^y2Yje*-pYl9p+2l`
z$+I_G7m3vkcz?gO%hHtm6A3DnzBJ_o<_}{}dg<roTkd%@>;~g~uO?YmtxLT5srgE)
zuKhg#KM?n~d>`5dgIqf%Gb4X!o!aw*-~D^0cAr%V59~03($HeQY6(9Z(s-L=b?3u#
zGT|Xqq}X~MSfP4!p~)K4b^<@2o1>rzDNV9nzM}s9{mr}WS^ne;r~ZxmhDBUgCk5z*
zU+uc#wY5Alr`XXQi-u#-hVv2CvS8ooDO1N-49|!<iE;UG4D3yg_nny|Azaz_2~I8Q
zAnqo@DR+w724P=FO60*$4k`A08V}4H_Bw^7+z?URe9l)a{%cXeOZm4A3M<W`Ywmp#
zR;+^5vvmWBF9@q3p~J?5Js<N`9fUzsgeEple`Q-F-ie;T1;uvG1Ni7?^W?a}jVvpv
zDkOP&`#wUJCi7l03f!PzqCEDsjvBIaz)$$A&6|_Aa?vsk&+UhiOc)-MiCoCeD*35F
z5fya7?Spda2qc!1r~N||&9g!x6RD;lnRcS=2ksmDase@<vfCuxY?cxq4S5IF57rLP
zTqT+E)OkkjN)dN<Ze!^(i|9<Bu!*m*l8n_M`-&!}WMqAh*$in{PWH}NFp%!97KSOC
zWIk+X9Fe_dj^YYaNA~C(t`YUnN9T7>TS3<R8eTSN(7bt?6v)ZZu8%2-K+{o*Jv=^Y
zM7>#dxeMhyi_Xjg8Z;^&6XGC?C`?+nlp|2lAmZbM?q<7))|#t#k68-T8Fp`u&!mFl
zf{^a!cVji@PqQAxfCLRr(6`5LyR7XsI0SC~<iB{y)}*0qWN(<P=;8)!EgcnlqG;!r
zL4N)iUh45?h0f39wT+32!BeJ@2C?PzTs;9r;r9J|CVg^}foNjz2f-W%x<3)6*_Em&
zFZwn3Ik#1OC2a@n<b!fjGi#_e>CNo4kD*<A6_lQq$3RVY6I-A0$ku%Ns`mbj;2r?I
zO1gMMwDu9`t0X`^2?Ehz(kzW`nvLWH>kW#uLEeG&D_x251F#OsuhlA6R?)a5qn#ki
zKsk8$AVX^OS1QQD3x&J_lb7~Xi3|xER7Jf4mbJb*NbKbr%1Gt_){vyj^7Tq#_3U_1
zF<D<`FZIZ&`=H~s$62~X%0etl*4$ZiI&`at{rd?2)32OEL2@hiC-}gzgO4M9g8*`8
zAUv*0<qhG0TH-}VySUd7hbqN;-4c}^zS148tCfzFOir?!piB?y7Y-5*;q@9%2(c0g
z_;?6H3Lx>mR0^xp$JWzJc1k~Go;8AFu>G`r(wu7xzp^HcBabn^5q)|YuapSt*3d#9
zF6f*7F#bx&(yqFCr(@d_Gv*XhO7rZS>!g{Q-7tgba)~5cl^&L%qN>xhoYg)q5<s%?
zywDYzYd*K5Z`*Xo?lI>ZRdyAXZiBF{1YW8Ub)pf<pOhpK3oF$k<j_I()?00=x8$51
z>E?}Ys4oSSJ)nGXvn3*Io5qsI%F><CDZy^U?`h-~H%_6tr@cA=qy>E%b(+x;&GdyU
zIAy$zv&*s*?{`|nDElK?FAwep>dCaoTff_Wgag|#Khge%dj$-RBWLm^GdvsaitDlt
z#(q&csol}D&%;wCNSE6r3;Rp94c5Xmms1*QTGq?kj8{GCh94>NJ@tF^%*WIIW1WbO
zWZ3@2%lD>@SzKA-y{n!~Od1V`<9$1#AA89PAGAOfVJ_JD;%0{6I7$kukbRed@+mII
zBLF(dNU6~2+DazYCwG3qlW7X6Sz&#>rPeN2=Cn4n;!b}kyY>(hbO(--Q!YW_I|K2V
z1zx+U6+agj4@~`ssGdCWj}K$<N-!7vRQ<gxdq~+wW-VI>XR1u}yrI*|JH<KxRV(7a
znKB$i+RVH38DBjx!tj(kejjwaL@HnMrj#=ua*rvA?vXvf?eNCVD>=u!o$|}yzg0Y3
z!OqSn<-FBD7crYdLwmD)imflO>6u&SMgBW%qRtnwtE$nNR-b8wP|hDtPF^rPb}Qdv
zu+`DYIgbGh4{N+%*Ns}M-Am|rq{%3)@};}@t81A_*RfK@`l>juhP~PvT}FzWH`_rD
z@Ntyg`HID<9q5?^gr3R1>_?e`o9FSN7w3`0pGwMGe#Q?~205CGM&CziM^5iwu*m%S
zbw8|=Ov>qM^eWYTM@h1(QRwWC!Kma<|11{o#N}P;=d4~!OoFz~=)};qTkX*neH+uR
zTsr9>)!!`rh^pF!Ov%(VGuYw2BBduI=+eczp0GDxS>-4)zU`t$TFn1jHDgz;^>(lI
zX^RD);MUcA|5%yS-mu9RMNyhzd%^Hg+^3xpkZ8SVL2h@^&;75HGhQ7<_{;gx#!Iv5
z?PZ_iBBYG(j6MZ=f$0_7Th<6l6Vp-7tBS#+tt#C7V=%E0JTAM+%KB&XaqL15_WNht
z&A3Fbq)#??(|IckoS)7}yTK35Ch=EKKilq+rrI+4yId6@YtG*5n2R3>uS0Xm43lJ}
zuQ2*odInuDE2Y?)jLDf~occlwO%9n-tkE{;!@|b%A`0E2oHwewmOmfVh$B9|E5fTA
zLc~5?&hFK_+rM&%*rzc`Ds$SpabeC<NQ0F~640iqhNxKtJ9#ngdmp80uLw*!)JJgm
z(elW_Ls;0)-&$|A6d2mtG>S<{U?&Di&FLD5O2jJd*8)Vqg_`eUz$X!?6&pIHN6V@+
z=;Ki#lcBqcAqi^vG3snV1XM&d!%~iu7yf*ak2-2RNH#8W_s?0rK-{o_&h2rW^yLru
zsg-4$Yx<ynd_qw7F>8`)<@h<TS+BPTwNaGWqH0;8`a1q<Jb|J~nC*ycbKdw*X;F?i
zJJj*k<Q3Yk?YeKNGJAhmw50t`(W0Qpc%ZH829K@Zso~pLf!+y$Ihnw^zPYlN*!}sl
zki+RD&b8FaacT9^XtPnjTPM>UoO!Aa0_>!LZ`CpOygDUj>8GBBxZ?{EaJzbI>lL@T
z{UsOG8#R0Wj}L%Aq05H0&=+<iZ&NE)E_oH$U^0@wWUbSZrk4ortGE34_(4L`=G05j
z(h4WmWKF2TR!wDvV^MK*A!8aeF+EQ&z^H@Nw$+!8HeBx5lL5E(#a)kQotc#JYZSy}
z6D4QMHp|R=>ohLR%P|v*-e`IHEDxZ*!&qmD3ApxSHc3vk?yw_nAkQjT>~0{*&C?=#
zdw9X#2`lM0y(wl<hEgu@Zff^&gEZdE1g=+<Xp;K!I7>h~Rvl@={h;$>a^3Lch9q^l
zc-xQimloXPKdg!=?YgCZqh{F-o;Awmu9kd7v+;#;1gB&}u0-d~I)7~(Cbp^{WVudA
zYf{UCP?o3N<)+xl+$b1*SUhkhd;HW=f!0ioN~ui|k=VI=i~pNf{Vvr+U!#Wrl9=?S
zV47kG)n;28msaUnW7P^<!ev-~`}RFOJ89tCp>K2FENKgDuTX<)b0?QeXI>;Bhg86<
zaztePcZ&)f7Lwk|t77=_Ssy_mmHFF#W(6;j#8P34@0o=hbQ-qswdk&crwZ^G7X!gw
zEX89Y`Pr+Z@jZQu{`}8?b@g|~c1(4BsUb_yJN9NX^GzuT=HfU<+wHEKZJ$P~n}57z
z2k{oo#5VVIL@o%|S5+yp|G4~qJHC0=?TL2Cp<e=S5-Sy=H|8lf0jdAEx*6GAYH&rU
z?)NMI7t*$Vy0LC|FhFtD)NTyt#MT6H_z+ZpRm&))IJYRN?<-=Ts^R~!pMPb7K%`qV
z6SIke>keF<dzEwcvG0n5R=}YfB@qh5)NE~~Y@XrYaei3og4>e_qV?joC&52QX6D4Q
zL-&&?=WmN+|A<@NKf(LosjU#$<eO2bL0-uE1|HepGu@c~`<oD~tgZA_;Z@N80fWT)
AX8-^I

diff --git a/examples/declarative/particles/spaceexplorer/content/rocket2.png b/examples/declarative/particles/spaceexplorer/content/rocket2.png
deleted file mode 100644
index 7110f8fdc6b11752b0d7beadcb4a13046003cb3a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1918
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
Ef;-%<XaE2J

diff --git a/examples/declarative/particles/spaceexplorer/content/rocketEye.png b/examples/declarative/particles/spaceexplorer/content/rocketEye.png
deleted file mode 100644
index 20005937d2fe79da543a6ebe8353de5facd9ded2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2073
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
S$G>-64?v^rPgWuSi1{z)KKSVX

diff --git a/examples/declarative/particles/spaceexplorer/content/star.png b/examples/declarative/particles/spaceexplorer/content/star.png
deleted file mode 100644
index 0d592cfa8752ac8a75f92614369011812be88639..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1550
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y
zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP
zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W}skZsAp(w
zVs37(qhMrUXrOOkq;F`XYiMp|Y-D9%pa2C*K--E^(yW49+@N*=dA3R!B_#z``ugSN
z<$C4Ddih1^`i7R4mLM~XjC6r2bc-wVN)jt{^NN*WCb*;)Cl_TFlw{`TDS%8&Ov*1U
zu~h=P6yk;40=Thx#n4~^2AF<DVu8M)o&m^9FonLp_?717!c`ZS1f?R}i`C%bkjjEo
z{h-w1{L-RiV8o><gRCmBaxO|uEXgkl$<NP$g<?QPeo20DMt*^UbFis`Z(?$09*7TC
z@9S&jnO9trn3tUD>0+w{G(j&jGsViu#lY3g$;Hsn#lXza(AB`g+{MiW80;?2=H^aD
zE=DlDF8Rr&xv6<2Fuf@Vy+%0of|5dR0nlcb)S}F?)D*X({9FaFm#s2!y2aTIr+HAl
zDY)HYfK#tN&@uX;h((HMm=G}afSB-P3*^8Perg^twHE=CH6P#S^9&43O`a}}Ar-f_
zgy;5MHV`<ga<fkNP0$1OZWi$e5_8%ff9Uo;DCrROmOsL7+g-J#t!Wb8`X^>p<(R*9
ztIE23WZv_c-;e1T78`z0dT;&s--DB{7!M|$H(fbdV1aO|M#WTq5u0i`ZD!Gk;<Q~~
zy__GPW3hIeeyZX3+ldLQnkG0+EW97De9+QE#rVOE|Hl~21GCr6={d8Z{5;1yvCV>i
zF6OQ5waWeYQ$jM+c6FfAU%QE&32G6^fwS(^GcDwlz3o=O=xf3$wCkU6%0^a3xunCo
zO!kbOp$@_e-Ar2hq*&Cw=cFDnvyFK*t;t(Jv1j#$207JvJ45Y{?odlTYjt_QpMyPX
zxWH9ejvv!EUyt~}^WKbe?F`8cYn}#GYF98Su?VHlIL`Ual<9u@m!3CaF{_I1aNJv<
za^E3|C+T_<>#;YQc3W;(9rDxOyMA}@*YtzY=Wn0Wl%M#^?uVb?0%tD)<q*XU${+nc
z$Q_DSSiCWAqj`Ph0l9OH@1@sgiZVYlj5c&-dw=0>9H$+}KdyP)&zjyh`u4QXV=qa6
zE$~O^p#8#UdpY8pPK56{y>aStqX3DuWnA2Kf`2|7yMM4Myx`Q@jdR~mRG7ngQXuAK
zW-8n2yUqnuzt0I({>2(J*S*F0=}Kc3=Nl2vJbng6cH1yT-zehC)d>yQ=5=7A@g0`f
zyvDN~SC%Yc+H&C(tH+uoC!f>=p8oZFdYAg#n0#@Yb<f?#5OJw+_c!KFcYpug6Q7%&
zbNp9v?}O(OoB5_LGRv}Sdvsl^V&SE8ZFzs(uI^s`!DzD1L5`*@-lm*6%+9tc%?pe(
zl7u%cEDf-Hx^a(_r$zgLmH%h({7XN=FKN?$V57>U<k!mTi;_G42`4a=UU<;6N?oZM
PR6={Y`njxgN@xNA$LK`L

diff --git a/examples/declarative/particles/spaceexplorer/spaceexplorer.qml b/examples/declarative/particles/spaceexplorer/spaceexplorer.qml
deleted file mode 100644
index cb8acb815e..0000000000
--- a/examples/declarative/particles/spaceexplorer/spaceexplorer.qml
+++ /dev/null
@@ -1,417 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-**     the names of its contributors may be used to endorse or promote
-**     products derived from this software without specific prior written
-**     permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.0
-import QtQuick.Particles 2.0
-import "content/helpers.js" as Helpers
-
-Rectangle{
-    id: root
-    width: 360
-    height: 540
-    color: "black"
-    Image{
-        anchors.centerIn: parent
-        source: "../asteroid/content/finalfrontier.png"
-    }
-    property bool spacePressed: false
-    property int holeSize: 4
-    focus: true
-    Keys.onPressed: {
-        if (event.key == Qt.Key_Space) {
-            spacePressed = true;
-            event.accepted = true;
-        }
-    }
-    Keys.onReleased: {
-        if (event.key == Qt.Key_Space) {
-            spacePressed = false;
-            event.accepted = true;
-        }
-    }
-
-    function fakeMove(){
-        fakeMoving = rocket.x < 80 || rocket.x+rocket.width-root.width > -80 || rocket.y < 80 || rocket.y+rocket.height-root.height > -80;
-        if(fakeMoving)
-            fakeMovementDir = Helpers.direction(root.width/2, root.height/2, rocket.x, rocket.y) + 180;
-    }
-    property bool fakeMoving: false
-    property real fakeMovementDir: 0
-
-    Emitter{
-        particle: "stars2"
-        system: background
-        emitRate: 60
-        lifeSpan: 4000
-        emitting: true
-        size: 10
-        sizeVariation: 10
-        anchors.fill: parent
-    }
-    ParticleSystem{ id: background }
-    ImageParticle{
-        particles: ["stars2"]
-        system: background
-        anchors.fill: parent
-        source: "content/star.png"
-        color: "white"
-        colorVariation: 0.1
-    }
-    Gravity{
-        system: background
-        anchors.fill: parent
-        acceleration: fakeMoving?10:0
-        angle: fakeMovementDir
-    }
-    Text{
-        color: "white"
-        anchors.bottom: parent.bottom
-        anchors.right: parent.right
-        text:"Drag the ship, but don't hit a black hole!"
-        font.pixelSize: 10
-    }
-    Text{
-        color: "white"
-        font.pixelSize: 36
-        anchors.centerIn: parent
-        text: "GAME OVER"
-        opacity: gameOver ? 1 : 0
-        Behavior on opacity{NumberAnimation{}}
-    }
-    Text{
-        color: "white"
-        font.pixelSize: 18
-        anchors.left: parent.left
-        anchors.bottom: parent.bottom
-        anchors.margins: 8
-        text: "Score: " + score
-    }
-    Image{
-        source: "content/star.png"
-        width: 40
-        height: 40
-        anchors.right: parent.right
-        anchors.top: parent.top
-        MouseArea{
-            anchors.fill: parent
-            anchors.margins: -20
-            onClicked: shoot = !shoot
-        }
-    }
-    property int score: 0
-    property bool gameOver: false
-    property bool shoot: true
-    property int maxLives: 3
-    property int lives: maxLives
-    property bool alive: !Helpers.intersects(rocket, gs1.x, gs1.y, holeSize) && !Helpers.intersects(rocket, gs2.x, gs2.y, holeSize) && !Helpers.intersects(rocket, gs3.x, gs3.y, holeSize)  && !Helpers.intersects(rocket, gs4.x, gs4.y, holeSize);
-    onAliveChanged: if(!alive){
-        lives -= 1;
-        if(lives == -1){
-            console.log("game over");
-            gameOver = true;
-        }
-    }
-    Row{
-        Repeater{
-            model: maxLives
-            delegate: Image{ 
-                opacity: index < lives ? 1 : 0
-                Behavior on opacity{NumberAnimation{}}
-                source: "content/rocket.png" 
-            }
-        }
-    }
-
-    property real courseDur: 10000
-    property real vorteX: width/4
-    property real vorteY: height/4
-    Behavior on vorteX{NumberAnimation{duration: courseDur}}
-    Behavior on vorteY{NumberAnimation{duration: courseDur}}
-    property real vorteX2: width/4
-    property real vorteY2: 3*height/4
-    Behavior on vorteX2{NumberAnimation{duration: courseDur}}
-    Behavior on vorteY2{NumberAnimation{duration: courseDur}}
-    property real vorteX3: 3*width/4
-    property real vorteY3: height/4
-    Behavior on vorteX3{NumberAnimation{duration: courseDur}}
-    Behavior on vorteY3{NumberAnimation{duration: courseDur}}
-    property real vorteX4: 3*width/4
-    property real vorteY4: 3*height/4
-    Behavior on vorteX4{NumberAnimation{duration: courseDur}}
-    Behavior on vorteY4{NumberAnimation{duration: courseDur}}
-    Timer{
-        id: vorTimer
-        interval: courseDur
-        running: true
-        repeat: true
-        triggeredOnStart: true
-        onTriggered: {
-            vorteX = Math.random() * width * 2 - width * 0.5;
-            vorteY = Math.random() * height * 2 - height * 0.5;
-            vorteX2 = Math.random() * width * 2 - width * 0.5;
-            vorteY2 = Math.random() * height * 2 - height * 0.5;
-            vorteX3 = Math.random() * width * 2 - width * 0.5;
-            vorteY3 = Math.random() * height * 2 - height * 0.5;
-            vorteX4 = Math.random() * width * 2 - width * 0.5;
-            vorteY4 = Math.random() * height * 2 - height * 0.5;
-        }
-    }
-
-
-
-    ParticleSystem{ id: foreground }
-    ImageParticle{
-        particles: ["stars"]
-        anchors.fill: parent
-        system: foreground
-        source: "content/star.png"
-        color: "white"
-        colorVariation: 0.1
-    }
-    ImageParticle{
-        particles: ["shot"]
-        anchors.fill: parent
-        system: foreground
-        source: "content/star.png"
-
-        color: "orange"
-        colorVariation: 0.3
-    }
-    ImageParticle{
-        id: engine
-        particles: ["engine"]
-        anchors.fill: parent
-        system: foreground
-        source: "content/particle4.png"
-
-        color: "orange"
-        SequentialAnimation on color {
-            loops: Animation.Infinite
-            ColorAnimation {
-                from: "red"
-                to: "cyan"
-                duration: 1000
-            }
-            ColorAnimation {
-                from: "cyan"
-                to: "red"
-                duration: 1000
-            }
-        }
-
-        colorVariation: 0.2
-    }
-    ImageParticle{
-        particles: ["powerups"]
-        anchors.fill: parent
-        system: foreground
-        sprites:[Sprite{
-            name: "norm"
-            source: "content/powerupScore.png"
-            frames: 35
-            duration: 40
-            to: {"norm":1, "got":0}
-        },
-        Sprite{
-            name: "got"
-            source: "content/powerupScore_got.png"
-            frames: 22
-            duration: 40
-            to: {"null":1}
-        },
-        Sprite{
-            name: "null"
-            source: "content/powerupScore_gone.png"
-            frames: 1
-            duration: 1000
-        }
-        ]
-    }
-    SpriteGoal{
-        x: rocket.x - 30
-        y: rocket.y - 30
-        width: 60
-        height: 60
-        goalState: "got"
-        jump: true
-        onAffected: if(!gameOver) score += 1000
-        system: foreground
-    }
-    PointAttractor{
-        proportionalToDistance: PointAttractor.InverseQuadratic;
-        id: gs1; pointX: vorteX; pointY: vorteY; strength: 800000;
-        system: foreground
-    }
-    Kill{
-        x: gs1.pointX - holeSize;
-        y: gs1.pointY - holeSize;
-        width: holeSize * 2
-        height: holeSize * 2
-        system: foreground
-    }
-
-    PointAttractor{
-        proportionalToDistance: PointAttractor.InverseQuadratic;
-        id: gs2; pointX: vorteX2; pointY: vorteY2; strength: 800000;
-        system: foreground
-    }
-    Kill{
-        x: gs2.pointX - holeSize;
-        y: gs2.pointY - holeSize;
-        width: holeSize * 2
-        height: holeSize * 2
-        system: foreground
-    }
-
-    PointAttractor{
-        proportionalToDistance: PointAttractor.InverseQuadratic;
-        id: gs3; pointX: vorteX3; pointY: vorteY3; strength: 800000;
-        system: foreground
-    }
-    Kill{
-        x: gs3.pointX - holeSize;
-        y: gs3.pointY - holeSize;
-        width: holeSize * 2
-        height: holeSize * 2
-        system: foreground
-    }
-    PointAttractor{
-        id: gs4; pointX: vorteX4; pointY: vorteY4; strength: 800000;
-        proportionalToDistance: PointAttractor.InverseQuadratic;
-        system: foreground
-    }
-    Kill{
-        x: gs4.pointX - holeSize;
-        y: gs4.pointY - holeSize;
-        width: holeSize * 2
-        height: holeSize * 2
-        system: foreground
-    }        
-    Emitter{
-        particle: "powerups"
-        system: foreground
-        emitRate: 1
-        lifeSpan: 6000
-        emitting: !gameOver
-        size: 60
-        sizeVariation: 10
-        anchors.fill: parent
-    }
-    Emitter{
-        particle: "stars"
-        system: foreground
-        emitRate: 40
-        lifeSpan: 4000
-        emitting: !gameOver
-        size: 30
-        sizeVariation: 10
-        anchors.fill: parent
-    }
-    SpriteImage{
-        id: rocket
-        //Sprites or children for default?
-        Sprite{
-            name: "normal"
-            source: "content/rocket2.png"
-            frames: 1
-            duration: 1000
-            to: {"normal": 0.9, "winking" : 0.1}
-        }
-        Sprite{
-            name: "winking"
-            source: "content/rocketEye.png"
-            frames: 10
-            duration: 40
-                to: {"normal" : 1}
-        }
-        x: root.width/2
-        y: root.height/2
-        property int lx: 0
-        property int ly: 0
-        property int lastX: 0
-        property int lastY: 0
-        width: 45
-        height: 22
-        onXChanged:{ lastX = lx; lx = x; fakeMove()}
-        onYChanged:{ lastY = ly; ly = y; fakeMove()}
-        rotation: Helpers.direction(lastX, lastY, x, y)
-        data:[
-        MouseArea{
-            id: ma
-            anchors.fill: parent;
-            drag.axis: Drag.XandYAxis
-            drag.target: rocket
-        },
-        Emitter{
-            system: foreground
-            particle: "engine"
-            emitRate: 100
-            lifeSpan: 1000
-            emitting: !gameOver 
-            size: 10
-            endSize: 4
-            sizeVariation: 4
-            speed: PointDirection{
-                x: -128 * Math.cos(rocket.rotation * (Math.PI / 180))
-                y: -128 * Math.sin(rocket.rotation * (Math.PI / 180))
-            }
-            anchors.verticalCenter: parent.verticalCenter
-            height: 4
-            width: 4
-            
-        }, 
-        Emitter{
-            system: foreground
-            particle: "shot"
-            emitRate: 16
-            lifeSpan: 1600
-            emitting: !gameOver && shoot
-            size: 40
-            speed: PointDirection{
-                x: 256 * Math.cos(rocket.rotation * (Math.PI / 180))
-                y: 256 * Math.sin(rocket.rotation * (Math.PI / 180))
-            }
-            x: parent.width - 4
-            y: parent.height/2
-        }
-        ]
-    }
-}
-
diff --git a/examples/declarative/particles/trails/combustion.qml b/examples/declarative/particles/trails/combustion.qml
index f244300524..e4a21e9beb 100644
--- a/examples/declarative/particles/trails/combustion.qml
+++ b/examples/declarative/particles/trails/combustion.qml
@@ -70,7 +70,7 @@ Rectangle {
                     color: "#2060160f"
                 }
                 SpriteGoal{
-                    collisionParticles: ["lit"]
+                    whenCollidingWith: ["lit"]
                     goalState: "lighting"
                     jump: true
                     systemStates: true
@@ -85,7 +85,7 @@ Rectangle {
                 name: "lit"
                 duration: 10000
                 onEntered: score++;
-                FollowEmitter{
+                TrailEmitter{
                     id: fireballFlame
                     particle: "flame"
 
@@ -99,7 +99,7 @@ Rectangle {
                     endSize: 4
                 }
 
-                FollowEmitter{
+                TrailEmitter{
                     id: fireballSmoke
                     particle: "smoke"
 
@@ -185,7 +185,7 @@ Rectangle {
             goalState: "lighting"
             jump: true
             systemStates: true
-            active: ma.pressed
+            enabled: ma.pressed
             width: 18
             height: 18
             x: ma.mouseX - width/2
diff --git a/examples/declarative/particles/trails/dynamicemitters.qml b/examples/declarative/particles/trails/dynamicemitters.qml
index dbf3f8fa82..dac5d93035 100644
--- a/examples/declarative/particles/trails/dynamicemitters.qml
+++ b/examples/declarative/particles/trails/dynamicemitters.qml
@@ -63,12 +63,11 @@ Rectangle{
             Emitter{
                 id: emitMore
                 system: sys
-                emitting: true
                 emitRate: 128
                 lifeSpan: 600
                 size: 16
                 endSize: 8
-                speed: AngledDirection{angleVariation:360; magnitude: 60}
+                speed: AngleDirection{angleVariation:360; magnitude: 60}
             }
 
             property int life: 2600
@@ -77,10 +76,9 @@ Rectangle{
             function go(){
                 xAnim.start();
                 yAnim.start();
-                container.emitting = true
+                container.enabled = true
             }
             system: sys
-            emitting: true
             emitRate: 32
             lifeSpan: 600
             size: 24
diff --git a/examples/declarative/particles/trails/fireballs.qml b/examples/declarative/particles/trails/fireballs.qml
index 4cc2eacc25..97a0c0ac5f 100644
--- a/examples/declarative/particles/trails/fireballs.qml
+++ b/examples/declarative/particles/trails/fireballs.qml
@@ -98,7 +98,7 @@ Rectangle {
         sizeVariation: 8
         endSize: 4
     }
-    FollowEmitter{
+    TrailEmitter{
         id: fireSmoke
         particle: "B"
         system: particles
@@ -116,7 +116,7 @@ Rectangle {
         sizeVariation: 8
         endSize: 16
     }
-    FollowEmitter{
+    TrailEmitter{
         id: fireballFlame
         anchors.fill: parent
         system: particles
@@ -133,7 +133,7 @@ Rectangle {
         endSize: 4
     }
     
-    FollowEmitter{
+    TrailEmitter{
         id: fireballSmoke
         anchors.fill: parent
         system: particles
diff --git a/examples/declarative/particles/trails/fireworks.qml b/examples/declarative/particles/trails/fireworks.qml
index a84f5d8b3c..437d9ee3d6 100644
--- a/examples/declarative/particles/trails/fireworks.qml
+++ b/examples/declarative/particles/trails/fireworks.qml
@@ -59,13 +59,13 @@ Rectangle{
                 name: "splode"
                 duration: 400
                 to: {"dead":1}
-                FollowEmitter{
+                TrailEmitter{
                     particle: "works"
                     emitRatePerParticle: 100
                     lifeSpan: 1000
-                    emitCap: 1200
+                    maximumEmitted: 1200
                     size: 8
-                    speed: AngledDirection{angle: 270; angleVariation: 45; magnitude: 20; magnitudeVariation: 20;}
+                    speed: AngleDirection{angle: 270; angleVariation: 45; magnitude: 20; magnitudeVariation: 20;}
                     acceleration: PointDirection{y:100; yVariation: 20}
                 }
             },
@@ -73,8 +73,7 @@ Rectangle{
                 name: "dead"
                 duration: 1000
                 Affector{
-                    onceOff: true
-                    signal: true
+                    once: true
                     onAffected: worksEmitter.burst(400,x,y)
                 }
             }
@@ -91,7 +90,7 @@ Rectangle{
             particle: "fire"
             width: parent.width
             y: parent.height
-            emitting: false
+            enabled: false
             emitRate: 80
             lifeSpan: 6000
             speed: PointDirection{y:-100;}
@@ -100,14 +99,14 @@ Rectangle{
         Emitter{
             id: worksEmitter
             particle: "works"
-            emitting: false
+            enabled: false
             emitRate: 100
             lifeSpan: 1600
-            emitCap: 6400
+            maximumEmitted: 6400
             size: 8
             speed: CumulativeDirection{
                 PointDirection{y:-100}
-                AngledDirection{angleVariation: 360; magnitudeVariation: 80;}
+                AngleDirection{angleVariation: 360; magnitudeVariation: 80;}
             }
             acceleration: PointDirection{y:100; yVariation: 20}
         }
diff --git a/examples/declarative/particles/trails/layered.qml b/examples/declarative/particles/trails/layered.qml
index d4a823b556..9af5f0bd64 100644
--- a/examples/declarative/particles/trails/layered.qml
+++ b/examples/declarative/particles/trails/layered.qml
@@ -53,7 +53,6 @@ Rectangle{
     }
     ParticleSystem{
         id: sys
-        startTime: 4000
     }
     Emitter{
         system: sys
@@ -61,6 +60,7 @@ Rectangle{
         width: root.width
         emitRate: 200
         lifeSpan: 4000
+        startTime: 4000
         speed: PointDirection{ y: -120; }
     }
     ImageParticle{
diff --git a/examples/declarative/particles/trails/list.qml b/examples/declarative/particles/trails/list.qml
index 7e8fb44003..b64e49456b 100644
--- a/examples/declarative/particles/trails/list.qml
+++ b/examples/declarative/particles/trails/list.qml
@@ -57,6 +57,7 @@ Rectangle {
         source: "content/star.png"
         color: "white"
         colorVariation: 0.0
+        rotationSpeed: 360
     }
 
     // Define a delegate component.  A component will be
@@ -95,11 +96,12 @@ Rectangle {
             Emitter{
                 anchors.fill: parent
                 system: particles;
-                emitting: anim.running
+                enabled: anim.running
                 emitRate: 600
                 lifeSpan: 600
                 size: 16
                 endSize: 8
+                sizeVariation: 8
             }
         }
     }
diff --git a/examples/declarative/particles/trails/overburst.qml b/examples/declarative/particles/trails/overburst.qml
index 620ae46088..baf1bf3046 100644
--- a/examples/declarative/particles/trails/overburst.qml
+++ b/examples/declarative/particles/trails/overburst.qml
@@ -47,7 +47,7 @@ Rectangle{
     height: 540
     ParticleSystem{
         id: sys
-        onClearChanged: if (clear) sys.pause();
+        onEmptyChanged: if (empty) sys.pause();
     }
     ImageParticle{
         system: sys
@@ -60,12 +60,12 @@ Rectangle{
         //burst on click
         id: bursty
         system: sys
-        emitting: ma.pressed
+        enabled: ma.pressed
         x: ma.mouseX
         y: ma.mouseY
         emitRate: 16000
-        emitCap: 4000
-        acceleration: AngledDirection{angleVariation: 360; magnitude: 360; }
+        maximumEmitted: 4000
+        acceleration: AngleDirection{angleVariation: 360; magnitude: 360; }
         size: 8
         endSize: 16
         sizeVariation: 4
@@ -78,7 +78,7 @@ Rectangle{
     MouseArea{
         width: 100
         height: 100
-        onClicked: bursty.noCap = true;
+        onClicked: bursty.maximumEmitted = -1;
         id: ma2
         Rectangle{
             anchors.fill: parent
diff --git a/examples/declarative/particles/trails/portal.qml b/examples/declarative/particles/trails/portal.qml
index 8cf323b0f5..85efd9a594 100644
--- a/examples/declarative/particles/trails/portal.qml
+++ b/examples/declarative/particles/trails/portal.qml
@@ -52,7 +52,6 @@ Rectangle{
     }
     ParticleSystem{ 
         id: particles 
-        startTime: 2000
     }
     ImageParticle{
         particles: ["center","edge"]
@@ -68,12 +67,11 @@ Rectangle{
         system: particles
         emitRate: 200
         lifeSpan: 2000
-        emitting: true
         size: 20
         sizeVariation: 2
         endSize: 0
         shape: EllipseShape{fill: false}
-        speed: TargetedDirection{
+        speed: TargetDirection{
             targetX: root.width/2 
             targetY: root.height/2
             proportionalMagnitude: true
@@ -83,22 +81,22 @@ Rectangle{
     Emitter{
         anchors.fill: parent
         particle: "edge"
+        startTime: 2000
         system: particles
         emitRate: 4000
         lifeSpan: 2000
-        emitting: true
         size: 20
         sizeVariation: 2
         endSize: 0
         shape: EllipseShape{fill: false}
-        speed: TargetedDirection{
+        speed: TargetDirection{
             targetX: root.width/2 
             targetY: root.height/2
             proportionalMagnitude: true
             magnitude: 0.1
             magnitudeVariation: 0.1
         }
-        acceleration: TargetedDirection{
+        acceleration: TargetDirection{
             targetX: root.width/2 
             targetY: root.height/2
             targetVariation: 200
diff --git a/examples/declarative/particles/trails/shimmer.qml b/examples/declarative/particles/trails/shimmer.qml
index d195a4477b..90b47bc6b7 100644
--- a/examples/declarative/particles/trails/shimmer.qml
+++ b/examples/declarative/particles/trails/shimmer.qml
@@ -72,7 +72,6 @@ Rectangle{
         system: particles
         emitRate: 2000
         lifeSpan: 2000
-        emitting: true
         size: 30
         sizeVariation: 10
     }
diff --git a/examples/declarative/particles/trails/trails.qml b/examples/declarative/particles/trails/trails.qml
index 689de4eb41..1b6f9e00c7 100644
--- a/examples/declarative/particles/trails/trails.qml
+++ b/examples/declarative/particles/trails/trails.qml
@@ -57,10 +57,10 @@ Rectangle{
     //burst on click
         id: bursty
         system: sys
-        emitting: false
+        enabled: false
         emitRate: 2000
         lifeSpan: 500
-        acceleration: AngledDirection{ angle: 90; angleVariation: 360; magnitude: 640; }
+        acceleration: AngleDirection{ angle: 90; angleVariation: 360; magnitude: 640; }
         size: 8
         endSize: 16
         sizeVariation: 4
@@ -68,12 +68,12 @@ Rectangle{
     Emitter{
         system: sys
         speedFromMovement: 4.0
-        emitting: ma.pressed
+        enabled: ma.pressed
         x: ma.mouseX
         y: ma.mouseY
         emitRate: 400
         lifeSpan: 2000
-        acceleration: AngledDirection{ angle: 90; angleVariation: 22; magnitude: 32; }
+        acceleration: AngleDirection{ angle: 90; angleVariation: 22; magnitude: 32; }
         size: 8
         endSize: 16
         sizeVariation: 8
diff --git a/examples/declarative/particles/trails/turbulence.qml b/examples/declarative/particles/trails/turbulence.qml
index 3f822c7889..62216c3460 100644
--- a/examples/declarative/particles/trails/turbulence.qml
+++ b/examples/declarative/particles/trails/turbulence.qml
@@ -91,9 +91,9 @@ Rectangle{
         endSize: 10
         sizeVariation: 10
         acceleration: PointDirection{ y: -40 }
-        speed: AngledDirection{ angle: 270; magnitude: 20; angleVariation: 22; magnitudeVariation: 5 }
+        speed: AngleDirection{ angle: 270; magnitude: 20; angleVariation: 22; magnitudeVariation: 5 }
     }
-    FollowEmitter{
+    TrailEmitter{
         id: smoke1
         width: root.width
         height: 258
@@ -108,9 +108,9 @@ Rectangle{
         endSize: 8
         sizeVariation: 8
         acceleration: PointDirection{ y: -40 }
-        speed: AngledDirection{ angle: 270; magnitude: 40; angleVariation: 22; magnitudeVariation: 5 }
+        speed: AngleDirection{ angle: 270; magnitude: 40; angleVariation: 22; magnitudeVariation: 5 }
     }
-    FollowEmitter{
+    TrailEmitter{
         id: smoke2
         width: root.width
         height: 232
@@ -124,6 +124,6 @@ Rectangle{
         endSize: 24
         sizeVariation: 8
         acceleration: PointDirection{ y: -40 }
-        speed: AngledDirection{ angle: 270; magnitude: 40; angleVariation: 22; magnitudeVariation: 5 }
+        speed: AngleDirection{ angle: 270; magnitude: 40; angleVariation: 22; magnitudeVariation: 5 }
     }
 }
diff --git a/examples/declarative/plasmapatrol/content/BlasterHardpoint.qml b/examples/declarative/plasmapatrol/content/BlasterHardpoint.qml
index 87c1822c05..384275fc94 100644
--- a/examples/declarative/plasmapatrol/content/BlasterHardpoint.qml
+++ b/examples/declarative/plasmapatrol/content/BlasterHardpoint.qml
@@ -57,10 +57,10 @@ Item {
         id: visualization
         particle: "blaster"
         system: container.system
-        emitting: show
+        enabled: show
         anchors.fill: parent
         shape: EllipseShape{}
-        speed: TargetedDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true}
+        speed: TargetDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true}
         lifeSpan: 1000
         emitRate: 64 
 
@@ -115,17 +115,17 @@ Item {
     Emitter{
         id: emitter
         particle: "blaster"
-        emitting: false
+        enabled: false
         system: container.system
         anchors.centerIn: parent
 
         lifeSpan: 1000
         emitRate: 16
-        emitCap: blasts
+        maximumEmitted: blasts
         size: 24
         endSize:16
         sizeVariation: 8
-        speed: TargetedDirection{
+        speed: TargetDirection{
             id: blastVector
             targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
         }
diff --git a/examples/declarative/plasmapatrol/content/CannonHardpoint.qml b/examples/declarative/plasmapatrol/content/CannonHardpoint.qml
index e0c23c1d63..b2c7aca1fd 100644
--- a/examples/declarative/plasmapatrol/content/CannonHardpoint.qml
+++ b/examples/declarative/plasmapatrol/content/CannonHardpoint.qml
@@ -52,7 +52,7 @@ Item {
     Emitter{
         id: visualization
         particle: "cannon"
-        emitting: container.show
+        enabled: container.show
         system: container.system
         anchors.centerIn: parent
         lifeSpan: 2000
@@ -81,7 +81,7 @@ Item {
     Emitter{
         id: emitter
         particle: "cannon"
-        emitting: false
+        enabled: false
         system: container.system
         anchors.centerIn: parent
 
@@ -89,7 +89,7 @@ Item {
         emitRate: 1
         size: 8
         endSize: 4
-        speed: TargetedDirection{
+        speed: TargetDirection{
             id: blastVector
             targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
         }
diff --git a/examples/declarative/plasmapatrol/content/Cruiser.qml b/examples/declarative/plasmapatrol/content/Cruiser.qml
index 4f600b961f..b0d20023db 100644
--- a/examples/declarative/plasmapatrol/content/Cruiser.qml
+++ b/examples/declarative/plasmapatrol/content/Cruiser.qml
@@ -66,20 +66,20 @@ Item {
 
         emitRate: hp > 0 ?  hp * 1 + 20 : 0 
         lifeSpan: 2400
-        emitCap: (maxHP * 1 + 20)*2.4
+        maximumEmitted: (maxHP * 1 + 20)*2.4
 
         size: 48
         sizeVariation: 16
         endSize: 16
 
-        speed: AngledDirection{angleVariation:360; magnitudeVariation: 32}
+        speed: AngleDirection{angleVariation:360; magnitudeVariation: 32}
     }
     Emitter{
         system: container.system
         particle: "cruiserArmor"
         anchors.fill: parent
         shape: EllipseShape{ fill: false }
-        emitting: hp>0
+        enabled: hp>0
         
         emitRate: 16
         lifeSpan: 2000
@@ -90,12 +90,12 @@ Item {
         SpriteGoal{
             id: destructor
             system: container.system
-            active: container.hp <=0
+            enabled: container.hp <=0
             anchors.fill: parent
             particles: ["cruiserArmor"]
             goalState: "death"
 //            jump: true
-            onceOff: true
+            once: true
         }
     }
 
diff --git a/examples/declarative/plasmapatrol/content/Frigate.qml b/examples/declarative/plasmapatrol/content/Frigate.qml
index 5c61177f66..8d493b81d5 100644
--- a/examples/declarative/plasmapatrol/content/Frigate.qml
+++ b/examples/declarative/plasmapatrol/content/Frigate.qml
@@ -61,7 +61,7 @@ Item {
         size: 92
         emitRate: 1
         lifeSpan: 4800
-        emitting: hp > 0
+        enabled: hp > 0
     }
     Emitter{
         system: container.system
@@ -76,7 +76,7 @@ Item {
         endSize: 8
         emitRate: hp > 0 ?  hp * 1 + 20 : 0 
         lifeSpan: 1200
-        emitCap: (maxHP * 1 + 20)*2
+        maximumEmitted: (maxHP * 1 + 20)*2
     }
     Timer{
         id: fireControl
diff --git a/examples/declarative/plasmapatrol/content/LaserHardpoint.qml b/examples/declarative/plasmapatrol/content/LaserHardpoint.qml
index ffc4be7acb..45712bf68a 100644
--- a/examples/declarative/plasmapatrol/content/LaserHardpoint.qml
+++ b/examples/declarative/plasmapatrol/content/LaserHardpoint.qml
@@ -54,9 +54,9 @@ Item {
         particle: "laser"
         system: container.system
         anchors.fill: parent
-        emitting: container.show
+        enabled: container.show
         shape: EllipseShape{}
-        speed: TargetedDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true }
+        speed: TargetDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true }
         lifeSpan: 1000
         emitRate: 64
 
@@ -87,7 +87,7 @@ Item {
     Emitter{
         id: emitter
         particle: "laser"
-        emitting: false
+        enabled: false
         system: container.system
         x: Math.min(container.width/2, target.x);
         width: Math.max(container.width/2, target.x) - x;
@@ -99,7 +99,7 @@ Item {
 
         lifeSpan: 1000
         emitRate: 8000
-        emitCap: 800
+        maximumEmitted: 800
         size: 16
         endSize: 0
 
diff --git a/examples/declarative/plasmapatrol/content/PlasmaPatrolParticles.qml b/examples/declarative/plasmapatrol/content/PlasmaPatrolParticles.qml
index 1ce1d065a5..792ba7ab72 100644
--- a/examples/declarative/plasmapatrol/content/PlasmaPatrolParticles.qml
+++ b/examples/declarative/plasmapatrol/content/PlasmaPatrolParticles.qml
@@ -144,21 +144,21 @@ Item{
             }
         ]
     }
-    FollowEmitter{
+    TrailEmitter{
         system: sys
         particle: "cannonWake"
         follow: "cannon"
         emitRatePerParticle: 64
         lifeSpan: 600
-        speed: AngledDirection{ angleVariation: 360; magnitude: 48}
+        speed: AngleDirection{ angleVariation: 360; magnitude: 48}
         size: 16
         endSize: 8
         sizeVariation: 2
-        emitting: true
+        enabled: true
         width: 1000//XXX: Terrible hack
         height: 1000
     }
-    FollowEmitter{
+    TrailEmitter{
         system: sys
         particle: "cannonCore"
         follow: "cannon"
@@ -166,7 +166,7 @@ Item{
         lifeSpan: 128
         size: 24
         endSize: 8
-        emitting: true
+        enabled: true
         width: 1000//XXX: Terrible hack
         height: 1000
     }
diff --git a/examples/declarative/plasmapatrol/content/Sloop.qml b/examples/declarative/plasmapatrol/content/Sloop.qml
index cfb5798ec6..82e57f5161 100644
--- a/examples/declarative/plasmapatrol/content/Sloop.qml
+++ b/examples/declarative/plasmapatrol/content/Sloop.qml
@@ -65,9 +65,9 @@ Item {
 
         emitRate: hp > 0 ?  hp + 20 : 0 
         lifeSpan: blinkInterval
-        emitCap: (maxHP + 20)
+        maximumEmitted: (maxHP + 20)
 
-        acceleration: AngledDirection{angleVariation: 360; magnitude: 8}
+        acceleration: AngleDirection{angleVariation: 360; magnitude: 8}
 
         size: 24
         endSize: 4
diff --git a/examples/declarative/plasmapatrol/plasmapatrol.qml b/examples/declarative/plasmapatrol/plasmapatrol.qml
index be6d15ec13..4ea464b9f8 100644
--- a/examples/declarative/plasmapatrol/plasmapatrol.qml
+++ b/examples/declarative/plasmapatrol/plasmapatrol.qml
@@ -96,7 +96,7 @@ Rectangle {
                     Emitter{
                         anchors.fill: parent
                         system: particles
-                        emitting: true
+                        enabled: true
                         particle: "default"
                         emitRate: 1200
                         lifeSpan: 1200
@@ -104,7 +104,7 @@ Rectangle {
                         size: 16
                         endSize: 0
                         sizeVariation: 8
-                        speed: AngledDirection{angleVariation:360; magnitudeVariation: 6}
+                        speed: AngleDirection{angleVariation:360; magnitudeVariation: 6}
                     }
                 }
                 Button{
diff --git a/examples/declarative/samegame/SamegameCore/BoomBlock.qml b/examples/declarative/samegame/SamegameCore/BoomBlock.qml
index 4f8ef70851..1c84fa8614 100644
--- a/examples/declarative/samegame/SamegameCore/BoomBlock.qml
+++ b/examples/declarative/samegame/SamegameCore/BoomBlock.qml
@@ -86,12 +86,12 @@ Item {
         }
         anchors.fill: parent
 
-        speed: TargetedDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -60; magnitudeVariation: 60}
+        speed: TargetDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -60; magnitudeVariation: 60}
         shape: EllipseShape{fill:true}
-        emitting: false;
+        enabled: false;
         lifeSpan: 700; lifeSpanVariation: 100
         emitRate: 1000
-        emitCap: 100 //only fires 0.1s bursts (still 2x old number, ImageParticle wants less than 16000 max though)
+        maximumEmitted: 100 //only fires 0.1s bursts (still 2x old number)
         size: 28
         endSize: 14
     }
diff --git a/src/declarative/particles/particles.pri b/src/declarative/particles/particles.pri
index 9f63cd81b9..527bd9ae61 100644
--- a/src/declarative/particles/particles.pri
+++ b/src/declarative/particles/particles.pri
@@ -1,18 +1,18 @@
 INCLUDEPATH += $$PWD
 
 HEADERS += \
-    $$PWD/qsgangleddirection_p.h \
+    $$PWD/qsgangledirection_p.h \
     $$PWD/qsgcustomparticle_p.h \
+    $$PWD/qsgcustomaffector_p.h \
     $$PWD/qsgellipseextruder_p.h \
-    $$PWD/qsgfollowemitter_p.h \
+    $$PWD/qsgtrailemitter_p.h \
     $$PWD/qsgfriction_p.h \
     $$PWD/qsggravity_p.h \
     $$PWD/qsgimageparticle_p.h \
     $$PWD/qsgitemparticle_p.h \
-    $$PWD/qsgkill_p.h \
+    $$PWD/qsgage_p.h \
     $$PWD/qsglineextruder_p.h \
     $$PWD/qsgmaskextruder_p.h \
-    $$PWD/qsgmodelparticle_p.h \
     $$PWD/qsgparticleaffector_p.h \
     $$PWD/qsgparticleemitter_p.h \
     $$PWD/qsgparticleextruder_p.h \
@@ -22,27 +22,28 @@ HEADERS += \
     $$PWD/qsgpointattractor_p.h \
     $$PWD/qsgpointdirection_p.h \
     $$PWD/qsgspritegoal_p.h \
-    $$PWD/qsgstochasticdirection_p.h \
-    $$PWD/qsgtargeteddirection_p.h \
+    $$PWD/qsgdirection_p.h \
+    $$PWD/qsgtargetdirection_p.h \
     $$PWD/qsgturbulence_p.h \
     $$PWD/qsgwander_p.h \
     $$PWD/qsgtargetaffector_p.h \
     $$PWD/qsgcumulativedirection_p.h \
-    $$PWD/qsgv8particledata_p.h
+    $$PWD/qsgv8particledata_p.h \
+    $$PWD/qsgrectangleextruder_p.h
 
 SOURCES += \
-    $$PWD/qsgangleddirection.cpp \
+    $$PWD/qsgangledirection.cpp \
     $$PWD/qsgcustomparticle.cpp \
+    $$PWD/qsgcustomaffector.cpp \
     $$PWD/qsgellipseextruder.cpp \
-    $$PWD/qsgfollowemitter.cpp \
+    $$PWD/qsgtrailemitter.cpp \
     $$PWD/qsgfriction.cpp \
     $$PWD/qsggravity.cpp \
     $$PWD/qsgimageparticle.cpp \
     $$PWD/qsgitemparticle.cpp \
-    $$PWD/qsgkill.cpp \
+    $$PWD/qsgage.cpp \
     $$PWD/qsglineextruder.cpp \
     $$PWD/qsgmaskextruder.cpp \
-    $$PWD/qsgmodelparticle.cpp \
     $$PWD/qsgparticleaffector.cpp \
     $$PWD/qsgparticleemitter.cpp \
     $$PWD/qsgparticleextruder.cpp \
@@ -52,13 +53,14 @@ SOURCES += \
     $$PWD/qsgpointattractor.cpp \
     $$PWD/qsgpointdirection.cpp \
     $$PWD/qsgspritegoal.cpp \
-    $$PWD/qsgstochasticdirection.cpp \
-    $$PWD/qsgtargeteddirection.cpp \
+    $$PWD/qsgdirection.cpp \
+    $$PWD/qsgtargetdirection.cpp \
     $$PWD/qsgturbulence.cpp \
     $$PWD/qsgwander.cpp \
     $$PWD/qsgtargetaffector.cpp \
     $$PWD/qsgcumulativedirection.cpp \
-    $$PWD/qsgv8particledata.cpp
+    $$PWD/qsgv8particledata.cpp \
+    $$PWD/qsgrectangleextruder.cpp
 
 RESOURCES += \
     $$PWD/particles.qrc
diff --git a/src/declarative/particles/qsgage.cpp b/src/declarative/particles/qsgage.cpp
new file mode 100644
index 0000000000..2c0678fd0e
--- /dev/null
+++ b/src/declarative/particles/qsgage.cpp
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Declarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qsgage_p.h"
+#include "qsgparticleemitter_p.h"
+QT_BEGIN_NAMESPACE
+/*!
+    \qmlclass Age QSGAgeAffector
+    \inqmlmodule QtQuick.Particles 2
+    \inherits Affector
+    \brief The Age affector allows you to prematurely age particles
+
+    The Age affector allows you to alter where the particle is in its lifecycle. Common uses
+    are to expire particles prematurely, possibly giving them time to animate out.
+
+    The Age affector only applies to particles which are still alive.
+*/
+/*!
+    \qmlproperty int QtQuick.Particles2::Age::lifeLeft
+
+    The amount of life to set the particle to have. Affected particles
+    will jump to a point in their life where they will have this many
+    milliseconds left to live.
+*/
+
+QSGAgeAffector::QSGAgeAffector(QSGItem *parent) :
+    QSGParticleAffector(parent), m_lifeLeft(0)
+{
+}
+
+
+bool QSGAgeAffector::affectParticle(QSGParticleData *d, qreal dt)
+{
+    Q_UNUSED(dt);
+    if (d->stillAlive()){
+        qreal curT = (qreal)m_system->m_timeInt/1000.0;
+        qreal ttl = (qreal)m_lifeLeft/1000.0;
+        d->t = curT - (d->lifeSpan - ttl) + 1;
+        return true;
+    }
+    return false;
+}
+QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgkill.cpp b/src/declarative/particles/qsgage_p.h
similarity index 70%
rename from src/declarative/particles/qsgkill.cpp
rename to src/declarative/particles/qsgage_p.h
index dfd26e3f39..c4c9929ad8 100644
--- a/src/declarative/particles/qsgkill.cpp
+++ b/src/declarative/particles/qsgage_p.h
@@ -39,30 +39,49 @@
 **
 ****************************************************************************/
 
-#include "qsgkill_p.h"
-#include "qsgparticleemitter_p.h"
+#ifndef KILLAFFECTOR_H
+#define KILLAFFECTOR_H
+#include "qsgparticleaffector_p.h"
+
+QT_BEGIN_HEADER
+
 QT_BEGIN_NAMESPACE
-/*!
-    \qmlclass Kill QSGKillAffector
-    \inqmlmodule QtQuick.Particles 2
-    \inherits Affector
-    \brief The Kill affector allows you to expire affected particles
 
-*/
+QT_MODULE(Declarative)
+
 
-QSGKillAffector::QSGKillAffector(QSGItem *parent) :
-    QSGParticleAffector(parent)
+class QSGAgeAffector : public QSGParticleAffector
 {
-}
+    Q_OBJECT
+    Q_PROPERTY(int lifeLeft READ lifeLeft WRITE setLifeLeft NOTIFY lifeLeftChanged)
 
+public:
+    explicit QSGAgeAffector(QSGItem *parent = 0);
 
-bool QSGKillAffector::affectParticle(QSGParticleData *d, qreal dt)
-{
-    Q_UNUSED(dt);
-    if (d->stillAlive()){
-        d->t -= d->lifeSpan + 1;
-        return true;
+    int lifeLeft() const
+    {
+        return m_lifeLeft;
+    }
+
+protected:
+    virtual bool affectParticle(QSGParticleData *d, qreal dt);
+signals:
+    void lifeLeftChanged(int arg);
+
+public slots:
+    void setLifeLeft(int arg)
+    {
+        if (m_lifeLeft != arg) {
+            m_lifeLeft = arg;
+            emit lifeLeftChanged(arg);
+        }
     }
-    return false;
-}
+
+private:
+
+int m_lifeLeft;
+};
+
 QT_END_NAMESPACE
+QT_END_HEADER
+#endif // KILLAFFECTOR_H
diff --git a/src/declarative/particles/qsgangleddirection.cpp b/src/declarative/particles/qsgangledirection.cpp
similarity index 84%
rename from src/declarative/particles/qsgangleddirection.cpp
rename to src/declarative/particles/qsgangledirection.cpp
index ab39b8a575..10a31bf07e 100644
--- a/src/declarative/particles/qsgangleddirection.cpp
+++ b/src/declarative/particles/qsgangledirection.cpp
@@ -39,21 +39,21 @@
 **
 ****************************************************************************/
 
-#include "qsgangleddirection_p.h"
+#include "qsgangledirection_p.h"
 #include <cmath>
 QT_BEGIN_NAMESPACE
 const qreal CONV = 0.017453292519943295;
 /*!
-    \qmlclass AngledDirection QSGAngledDirection
+    \qmlclass AngleDirection QSGAngleDirection
     \inqmlmodule QtQuick.Particles 2
-    \inherits StochasticDirection
-    \brief The AngledDirection element allows you to specify a direction that varies in angle
+    \inherits Direction
+    \brief The AngleDirection element allows you to specify a direction that varies in angle
 
     The AngledDirection element allows both the specification of a direction by angle and magnitude,
     as well as varying the parameters by angle or magnitude.
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::AngledDirection::angle
+    \qmlproperty real QtQuick.Particles2::AngleDirection::angle
     This property specifies the base angle for the direction.
     The angle of this direction will vary by no more than angleVariation
     from this angle.
@@ -63,7 +63,7 @@ const qreal CONV = 0.017453292519943295;
     The default value is zero.
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::AngledDirection::magnitude
+    \qmlproperty real QtQuick.Particles2::AngleDirection::magnitude
     This property specifies the base magnitude for the direction.
     The magnitude of this direction will vary by no more than magnitudeVariation
     from this magnitude.
@@ -73,7 +73,7 @@ const qreal CONV = 0.017453292519943295;
     The default value is zero.
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::AngledDirection::angleVariation
+    \qmlproperty real QtQuick.Particles2::AngleDirection::angleVariation
     This property specifies the maximum angle variation for the direction.
     The angle of the direction will vary by up to angleVariation clockwise
     and anticlockwise from the value specified in angle.
@@ -83,7 +83,7 @@ const qreal CONV = 0.017453292519943295;
     The default value is zero.
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::AngledDirection::magnitudeVariation
+    \qmlproperty real QtQuick.Particles2::AngleDirection::magnitudeVariation
     This property specifies the base magnitude for the direction.
     The magnitude of this direction will vary by no more than magnitudeVariation
     from the base magnitude.
@@ -92,8 +92,8 @@ const qreal CONV = 0.017453292519943295;
 
     The default value is zero.
 */
-QSGAngledDirection::QSGAngledDirection(QObject *parent) :
-    QSGStochasticDirection(parent)
+QSGAngleDirection::QSGAngleDirection(QObject *parent) :
+    QSGDirection(parent)
   , m_angle(0)
   , m_magnitude(0)
   , m_angleVariation(0)
@@ -102,7 +102,7 @@ QSGAngledDirection::QSGAngledDirection(QObject *parent) :
 
 }
 
-const QPointF &QSGAngledDirection::sample(const QPointF &from)
+const QPointF &QSGAngleDirection::sample(const QPointF &from)
 {
     //TODO: Faster
     qreal theta = m_angle*CONV - m_angleVariation*CONV + rand()/float(RAND_MAX) * m_angleVariation*CONV * 2;
diff --git a/src/declarative/particles/qsgangleddirection_p.h b/src/declarative/particles/qsgangledirection_p.h
similarity index 95%
rename from src/declarative/particles/qsgangleddirection_p.h
rename to src/declarative/particles/qsgangledirection_p.h
index 4d5522d13c..870a7eb0d9 100644
--- a/src/declarative/particles/qsgangleddirection_p.h
+++ b/src/declarative/particles/qsgangledirection_p.h
@@ -41,14 +41,14 @@
 
 #ifndef QSGANGLEDDIRECTION_H
 #define QSGANGLEDDIRECTION_H
-#include "qsgstochasticdirection_p.h"
+#include "qsgdirection_p.h"
 QT_BEGIN_HEADER
 
 QT_BEGIN_NAMESPACE
 
 QT_MODULE(Declarative)
 
-class QSGAngledDirection : public QSGStochasticDirection
+class QSGAngleDirection : public QSGDirection
 {
     Q_OBJECT
     Q_PROPERTY(qreal angle READ angle WRITE setAngle NOTIFY angleChanged)
@@ -56,7 +56,7 @@ class QSGAngledDirection : public QSGStochasticDirection
     Q_PROPERTY(qreal angleVariation READ angleVariation WRITE setAngleVariation NOTIFY angleVariationChanged)
     Q_PROPERTY(qreal magnitudeVariation READ magnitudeVariation WRITE setMagnitudeVariation NOTIFY magnitudeVariationChanged)
 public:
-    explicit QSGAngledDirection(QObject *parent = 0);
+    explicit QSGAngleDirection(QObject *parent = 0);
     const QPointF &sample(const QPointF &from);
     qreal angle() const
     {
diff --git a/src/declarative/particles/qsgcumulativedirection.cpp b/src/declarative/particles/qsgcumulativedirection.cpp
index 1d7523972b..8e4e6b681d 100644
--- a/src/declarative/particles/qsgcumulativedirection.cpp
+++ b/src/declarative/particles/qsgcumulativedirection.cpp
@@ -45,24 +45,24 @@ QT_BEGIN_NAMESPACE
 /*!
     \qmlclass CumulativeDirection QSGCumulativeDirection
     \inqmlmodule QtQuick.Particles 2
-    \inherits StochasticDirection
+    \inherits Direction
     \brief The CumulativeDirection element allows you to specify a direction made of other directions
 
     The CumulativeDirection element will act as a direction that sums the directions within it.
 */
-QSGCumulativeDirection::QSGCumulativeDirection(QObject *parent):QSGStochasticDirection(parent)
+QSGCumulativeDirection::QSGCumulativeDirection(QObject *parent):QSGDirection(parent)
 {
 }
 
-QDeclarativeListProperty<QSGStochasticDirection> QSGCumulativeDirection::directions()
+QDeclarativeListProperty<QSGDirection> QSGCumulativeDirection::directions()
 {
-    return QDeclarativeListProperty<QSGStochasticDirection>(this, m_directions);//TODO: Proper list property
+    return QDeclarativeListProperty<QSGDirection>(this, m_directions);//TODO: Proper list property
 }
 
 const QPointF &QSGCumulativeDirection::sample(const QPointF &from)
 {
     QPointF ret;
-    foreach (QSGStochasticDirection* dir, m_directions)
+    foreach (QSGDirection* dir, m_directions)
         ret += dir->sample(from);
     return ret;
 }
diff --git a/src/declarative/particles/qsgcumulativedirection_p.h b/src/declarative/particles/qsgcumulativedirection_p.h
index c54a795931..4f93fed1bd 100644
--- a/src/declarative/particles/qsgcumulativedirection_p.h
+++ b/src/declarative/particles/qsgcumulativedirection_p.h
@@ -41,7 +41,7 @@
 
 #ifndef QSGCUMULATIVEDIRECTION_P_H
 #define QSGCUMULATIVEDIRECTION_P_H
-#include "qsgstochasticdirection_p.h"
+#include "qsgdirection_p.h"
 #include <QDeclarativeListProperty>
 QT_BEGIN_HEADER
 
@@ -49,16 +49,16 @@ QT_BEGIN_NAMESPACE
 
 QT_MODULE(Declarative)
 
-class QSGCumulativeDirection : public QSGStochasticDirection
+class QSGCumulativeDirection : public QSGDirection
 {
     Q_OBJECT
-    Q_PROPERTY(QDeclarativeListProperty<QSGStochasticDirection> directions READ directions)
+    Q_PROPERTY(QDeclarativeListProperty<QSGDirection> directions READ directions)
     Q_CLASSINFO("DefaultProperty", "directions")
 public:
     explicit QSGCumulativeDirection(QObject *parent = 0);
-    QDeclarativeListProperty<QSGStochasticDirection> directions();
+    QDeclarativeListProperty<QSGDirection> directions();
     const QPointF &sample(const QPointF &from);
 private:
-    QList<QSGStochasticDirection*> m_directions;
+    QList<QSGDirection*> m_directions;
 };
 #endif // QSGCUMULATIVEDIRECTION_P_H
diff --git a/src/declarative/particles/qsgcustomaffector.cpp b/src/declarative/particles/qsgcustomaffector.cpp
new file mode 100644
index 0000000000..70e1dbe035
--- /dev/null
+++ b/src/declarative/particles/qsgcustomaffector.cpp
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Declarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qsgcustomaffector_p.h"
+#include <QDebug>
+QT_BEGIN_NAMESPACE
+
+//TODO: Move docs (and inherit) to real base when docs can propagate
+//TODO: Document particle 'type'
+/*!
+    \qmlsignal QtQuick.Particles2::Affector::affectParticle(particle, dt)
+
+    This handler is called when particles are selected to be affected.
+
+    dt is the time since the last time it was affected. Use dt to normalize
+    trajectory manipulations to real time.
+
+    Note that JS is slower to execute, so it is not recommended to use this in
+    high-volume particle systems.
+*/
+QSGCustomAffector::QSGCustomAffector(QSGItem *parent) :
+    QSGParticleAffector(parent)
+{
+}
+
+bool QSGCustomAffector::isAffectConnected()
+{
+    static int idx = QObjectPrivate::get(this)->signalIndex("affectParticle(QDeclarativeV8Handle,qreal)");
+    return QObjectPrivate::get(this)->isSignalConnected(idx);
+}
+
+bool QSGCustomAffector::affectParticle(QSGParticleData *d, qreal dt)
+{
+    if (isAffectConnected()){
+        d->update = 0.0;
+        emit affectParticle(d->v8Value(), dt);
+        return d->update == 1.0;
+    }
+    return true;
+}
+
+QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgkill_p.h b/src/declarative/particles/qsgcustomaffector_p.h
similarity index 84%
rename from src/declarative/particles/qsgkill_p.h
rename to src/declarative/particles/qsgcustomaffector_p.h
index d1e2292f13..7f39200298 100644
--- a/src/declarative/particles/qsgkill_p.h
+++ b/src/declarative/particles/qsgcustomaffector_p.h
@@ -39,8 +39,12 @@
 **
 ****************************************************************************/
 
-#ifndef KILLAFFECTOR_H
-#define KILLAFFECTOR_H
+#ifndef CUSTOMAFFECTOR_H
+#define CUSTOMAFFECTOR_H
+
+#include <QObject>
+#include "qsgparticlesystem_p.h"
+#include "qsgparticleextruder_p.h"
 #include "qsgparticleaffector_p.h"
 
 QT_BEGIN_HEADER
@@ -49,20 +53,22 @@ QT_BEGIN_NAMESPACE
 
 QT_MODULE(Declarative)
 
-
-class QSGKillAffector : public QSGParticleAffector
+class QSGCustomAffector : public QSGParticleAffector
 {
     Q_OBJECT
+
 public:
-    explicit QSGKillAffector(QSGItem *parent = 0);
-protected:
-    virtual bool affectParticle(QSGParticleData *d, qreal dt);
-signals:
+    explicit QSGCustomAffector(QSGItem *parent = 0);
 
+signals:
+    void affectParticle(QDeclarativeV8Handle particle, qreal dt);
 public slots:
-
+protected:
+    bool isAffectConnected();
+    virtual bool affectParticle(QSGParticleData *d, qreal dt);
+private:
 };
 
 QT_END_NAMESPACE
 QT_END_HEADER
-#endif // KILLAFFECTOR_H
+#endif // CUSTOMAFFECTOR_H
diff --git a/src/declarative/particles/qsgcustomparticle.cpp b/src/declarative/particles/qsgcustomparticle.cpp
index 00e3ec185b..6c95fe66c0 100644
--- a/src/declarative/particles/qsgcustomparticle.cpp
+++ b/src/declarative/particles/qsgcustomparticle.cpp
@@ -47,36 +47,36 @@ QT_BEGIN_NAMESPACE
 
 //Includes comments because the code isn't self explanatory
 static const char qt_particles_template_vertex_code[] =
-        "attribute highp vec2 vPos;                                                         \n"
-        "attribute highp vec2 vTex;                                                         \n"
-        "attribute highp vec4 vData; //  x = time,  y = lifeSpan, z = size,  w = endSize    \n"
-        "attribute highp vec4 vVec; // x,y = constant speed,  z,w = acceleration            \n"
-        "attribute highp float r;                                                           \n"
-        "uniform highp mat4 qt_Matrix;                                                      \n"
-        "uniform highp float timestamp;                                                     \n"
-        "varying highp vec2 fTex;                                                           \n"
-        "void defaultMain() {                                                               \n"
-        "    fTex = vTex;                                                                   \n"
-        "    highp float size = vData.z;                                                    \n"
-        "    highp float endSize = vData.w;                                                 \n"
-        "    highp float t = (timestamp - vData.x) / vData.y;                               \n"
-        "    highp float currentSize = mix(size, endSize, t * t);                           \n"
-        "    if (t < 0. || t > 1.)                                                          \n"
-        "        currentSize = 0.;                                                          \n"
-        "    highp vec2 pos = vPos                                                          \n"
-        "                   - currentSize / 2. + currentSize * vTex          // adjust size \n"
-        "                   + vVec.xy * t * vData.y         // apply speed vector..         \n"
-        "                   + 0.5 * vVec.zw * pow(t * vData.y, 2.);                         \n"
-        "    gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1);                            \n"
-        "}\n";
+        "attribute highp vec2 qt_ParticlePos;\n"
+        "attribute highp vec2 qt_ParticleTex;\n"
+        "attribute highp vec4 qt_ParticleData; //  x = time,  y = lifeSpan, z = size,  w = endSize\n"
+        "attribute highp vec4 qt_ParticleVec; // x,y = constant speed,  z,w = acceleration\n"
+        "attribute highp float qt_ParticleR;\n"
+        "uniform highp mat4 qt_Matrix;\n"
+        "uniform highp float qt_Timestamp;\n"
+        "varying highp vec2 qt_TexCoord0;\n"
+        "void defaultMain() {\n"
+        "    qt_TexCoord0 = qt_ParticleTex;\n"
+        "    highp float size = qt_ParticleData.z;\n"
+        "    highp float endSize = qt_ParticleData.w;\n"
+        "    highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;\n"
+        "    highp float currentSize = mix(size, endSize, t * t);\n"
+        "    if (t < 0. || t > 1.)\n"
+        "        currentSize = 0.;\n"
+        "    highp vec2 pos = qt_ParticlePos\n"
+        "                   - currentSize / 2. + currentSize * qt_ParticleTex   // adjust size\n"
+        "                   + qt_ParticleVec.xy * t * qt_ParticleData.y         // apply speed vector..\n"
+        "                   + 0.5 * qt_ParticleVec.zw * pow(t * qt_ParticleData.y, 2.);\n"
+        "    gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1);\n"
+        "}";
 static const char qt_particles_default_vertex_code[] =
         "void main() {        \n"
         "    defaultMain();   \n"
         "}";
 
-static const char qt_particles_default_fragment_code[] =//TODO: Default frag requires source?
+static const char qt_particles_default_fragment_code[] =
         "uniform sampler2D source;                                  \n"
-        "varying highp vec2 fTex;                                   \n"
+        "varying highp vec2 qt_TexCoord0;                           \n"
         "uniform lowp float qt_Opacity;                             \n"
         "void main() {                                              \n"
         "    gl_FragColor = texture2D(source, fTex) * qt_Opacity;   \n"
@@ -150,7 +150,7 @@ void QSGCustomParticle::componentComplete()
 
     This property holds the fragment shader's GLSL source code.
     The default shader expects the texture coordinate to be passed from the
-    vertex shader as "varying highp vec2 fTex", and it samples from a
+    vertex shader as "varying highp vec2 qt_TexCoord0", and it samples from a
     sampler2D named "source".
 */
 
@@ -171,31 +171,31 @@ void QSGCustomParticle::setFragmentShader(const QByteArray &code)
     This property holds the vertex shader's GLSL source code.
 
     The default shader passes the texture coordinate along to the fragment
-    shader as "varying highp vec2 fTex".
+    shader as "varying highp vec2 qt_TexCoord0".
 
     To aid writing a particle vertex shader, the following GLSL code is prepended
     to your vertex shader:
     \code
-        attribute highp vec2 vPos;
-        attribute highp vec2 vTex;
-        attribute highp vec4 vData; //  x = time,  y = lifeSpan, z = size,  w = endSize
-        attribute highp vec4 vVec; // x,y = constant speed,  z,w = acceleration
-        attribute highp float r;
+        attribute highp vec2 qt_ParticlePos;
+        attribute highp vec2 qt_ParticleTex;
+        attribute highp vec4 qt_ParticleData; //  x = time,  y = lifeSpan, z = size,  w = endSize
+        attribute highp vec4 qt_ParticleVec; // x,y = constant speed,  z,w = acceleration
+        attribute highp float qt_ParticleR;
         uniform highp mat4 qt_Matrix;
-        uniform highp float timestamp;
-        varying highp vec2 fTex;
+        uniform highp float qt_Timestamp;
+        varying highp vec2 qt_TexCoord0;
         void defaultMain() {
-            fTex = vTex;
-            highp float size = vData.z;
-            highp float endSize = vData.w;
-            highp float t = (timestamp - vData.x) / vData.y;
+            qt_TexCoord0 = qt_ParticleTex;
+            highp float size = qt_ParticleData.z;
+            highp float endSize = qt_ParticleData.w;
+            highp float t = (qt_Timestamp - qt_ParticleData.x) / qt_ParticleData.y;
             highp float currentSize = mix(size, endSize, t * t);
             if (t < 0. || t > 1.)
                 currentSize = 0.;
-            highp vec2 pos = vPos
-                           - currentSize / 2. + currentSize * vTex          // adjust size
-                           + vVec.xy * t * vData.y         // apply speed vector..
-                           + 0.5 * vVec.zw * pow(t * vData.y, 2.);
+            highp vec2 pos = qt_ParticlePos
+                           - currentSize / 2. + currentSize * qt_ParticleTex   // adjust size
+                           + qt_ParticleVec.xy * t * qt_ParticleData.y         // apply speed vector..
+                           + 0.5 * qt_ParticleVec.zw * pow(t * qt_ParticleData.y, 2.);
             gl_Position = qt_Matrix * vec4(pos.x, pos.y, 0, 1);
         }
     \endcode
@@ -340,7 +340,11 @@ void QSGCustomParticle::updateProperties()
     vertexCode = qt_particles_template_vertex_code + vertexCode;
 
     m_source.attributeNames.clear();
-    m_source.attributeNames << "vPos" << "vTex" << "vData" << "vVec" << "r";
+    m_source.attributeNames << "qt_ParticlePos"
+                            << "qt_ParticleTex"
+                            << "qt_ParticleData"
+                            << "qt_ParticleVec"
+                            << "qt_ParticleR";
 
     lookThroughShaderCode(vertexCode);
     lookThroughShaderCode(fragmentCode);
@@ -384,8 +388,8 @@ void QSGCustomParticle::lookThroughShaderCode(const QByteArray &code)
                 m_source.respectsMatrix = true;
             } else if (name == "qt_Opacity") {
                 m_source.respectsOpacity = true;
-            } else if (name == "timestamp") {
-                //TODO: Copy the whole thing just because I have one more uniform?
+            } else if (name == "qt_Timestamp") {
+                //Not strictly necessary
             } else {
                 m_source.uniformNames.insert(name);
                 if (type == "sampler2D") {
@@ -513,12 +517,12 @@ QSGShaderEffectNode* QSGCustomParticle::buildCustomNodes()
     return *(m_nodes.begin());
 }
 
-static const QByteArray timestampName("timestamp");
 
 void QSGCustomParticle::buildData()
 {
     if (!m_rootNode)
         return;
+    const QByteArray timestampName("qt_Timestamp");
     QVector<QPair<QByteArray, QVariant> > values;
     QVector<QPair<QByteArray, QPointer<QSGItem> > > textures;
     const QVector<QPair<QByteArray, QPointer<QSGItem> > > &oldTextures = m_material.textureProviders();
diff --git a/src/declarative/particles/qsgstochasticdirection.cpp b/src/declarative/particles/qsgdirection.cpp
similarity index 85%
rename from src/declarative/particles/qsgstochasticdirection.cpp
rename to src/declarative/particles/qsgdirection.cpp
index cdbc9f15ad..f233a56f61 100644
--- a/src/declarative/particles/qsgstochasticdirection.cpp
+++ b/src/declarative/particles/qsgdirection.cpp
@@ -39,23 +39,23 @@
 **
 ****************************************************************************/
 
-#include "qsgstochasticdirection_p.h"
+#include "qsgdirection_p.h"
 
 QT_BEGIN_NAMESPACE
 /*!
-    \qmlclass StochasticDirection QSGStochasticDirection
+    \qmlclass Direction QSGDirection
     \inqmlmodule QtQuick.Particles 2
-    \brief The StochasticDirection elements allow you to specify a vector space.
+    \brief The Direction elements allow you to specify a vector space.
 
 */
 
 
-QSGStochasticDirection::QSGStochasticDirection(QObject *parent) :
+QSGDirection::QSGDirection(QObject *parent) :
     QObject(parent)
 {
 }
 
-const QPointF &QSGStochasticDirection::sample(const QPointF &from)
+const QPointF &QSGDirection::sample(const QPointF &from)
 {
     return m_ret;
 }
diff --git a/src/declarative/particles/qsgstochasticdirection_p.h b/src/declarative/particles/qsgdirection_p.h
similarity index 95%
rename from src/declarative/particles/qsgstochasticdirection_p.h
rename to src/declarative/particles/qsgdirection_p.h
index 764937fc00..f64d5644e7 100644
--- a/src/declarative/particles/qsgstochasticdirection_p.h
+++ b/src/declarative/particles/qsgdirection_p.h
@@ -52,11 +52,11 @@ QT_BEGIN_NAMESPACE
 QT_MODULE(Declarative)
 
 
-class QSGStochasticDirection : public QObject
+class QSGDirection : public QObject
 {
     Q_OBJECT
 public:
-    explicit QSGStochasticDirection(QObject *parent = 0);
+    explicit QSGDirection(QObject *parent = 0);
 
     virtual const QPointF &sample(const QPointF &from);
 signals:
diff --git a/src/declarative/particles/qsgimageparticle.cpp b/src/declarative/particles/qsgimageparticle.cpp
index b31d763f82..007cfb98db 100644
--- a/src/declarative/particles/qsgimageparticle.cpp
+++ b/src/declarative/particles/qsgimageparticle.cpp
@@ -608,7 +608,7 @@ void fillUniformArrayFromImage(float* array, const QImage& img, int size)
     Acceptable values are
     \list
     \o None: Particles just appear and disappear.
-    \o Fade: Particles fade in from 0. opacity at the start of their life, and fade out to 0. at the end.
+    \o Fade: Particles fade in from 0 opacity at the start of their life, and fade out to 0 at the end.
     \o Scale: Particles scale in from 0 size at the start of their life, and scale back to 0 at the end.
     \endlist
 
@@ -812,7 +812,7 @@ void QSGImageParticle::setAutoRotation(bool arg)
         reset();
 }
 
-void QSGImageParticle::setXVector(QSGStochasticDirection* arg)
+void QSGImageParticle::setXVector(QSGDirection* arg)
 {
     if (m_xVector != arg) {
         m_xVector = arg;
@@ -822,7 +822,7 @@ void QSGImageParticle::setXVector(QSGStochasticDirection* arg)
         reset();
 }
 
-void QSGImageParticle::setYVector(QSGStochasticDirection* arg)
+void QSGImageParticle::setYVector(QSGDirection* arg)
 {
     if (m_yVector != arg) {
         m_yVector = arg;
diff --git a/src/declarative/particles/qsgimageparticle_p.h b/src/declarative/particles/qsgimageparticle_p.h
index eb890e285c..01eacbad99 100644
--- a/src/declarative/particles/qsgimageparticle_p.h
+++ b/src/declarative/particles/qsgimageparticle_p.h
@@ -42,7 +42,7 @@
 #ifndef ULTRAPARTICLE_H
 #define ULTRAPARTICLE_H
 #include "qsgparticlepainter_p.h"
-#include "qsgstochasticdirection_p.h"
+#include "qsgdirection_p.h"
 #include <QDeclarativeListProperty>
 #include <qsgsimplematerial.h>
 
@@ -172,9 +172,9 @@ class QSGImageParticle : public QSGParticlePainter
 
     //###Call i/j? Makes more sense to those with vector calculus experience, and I could even add the cirumflex in QML?
     //xVector is the vector from the top-left point to the top-right point, and is multiplied by current size
-    Q_PROPERTY(QSGStochasticDirection* xVector READ xVector WRITE setXVector NOTIFY xVectorChanged)
+    Q_PROPERTY(QSGDirection* xVector READ xVector WRITE setXVector NOTIFY xVectorChanged)
     //yVector is the same, but top-left to bottom-left. The particle is always a parallelogram.
-    Q_PROPERTY(QSGStochasticDirection* yVector READ yVector WRITE setYVector NOTIFY yVectorChanged)
+    Q_PROPERTY(QSGDirection* yVector READ yVector WRITE setYVector NOTIFY yVectorChanged)
     Q_PROPERTY(QDeclarativeListProperty<QSGSprite> sprites READ sprites)
 
     Q_PROPERTY(EntryEffect entryEffect READ entryEffect WRITE setEntryEffect NOTIFY entryEffectChanged)
@@ -243,9 +243,9 @@ public:
 
     bool autoRotation() const { return m_autoRotation; }
 
-    QSGStochasticDirection* xVector() const { return m_xVector; }
+    QSGDirection* xVector() const { return m_xVector; }
 
-    QSGStochasticDirection* yVector() const { return m_yVector; }
+    QSGDirection* yVector() const { return m_yVector; }
 
     bool bloat() const { return m_bloat; }
 
@@ -282,9 +282,9 @@ signals:
 
     void autoRotationChanged(bool arg);
 
-    void xVectorChanged(QSGStochasticDirection* arg);
+    void xVectorChanged(QSGDirection* arg);
 
-    void yVectorChanged(QSGStochasticDirection* arg);
+    void yVectorChanged(QSGDirection* arg);
 
     void bloatChanged(bool arg);
 
@@ -312,9 +312,9 @@ public slots:
 
     void setAutoRotation(bool arg);
 
-    void setXVector(QSGStochasticDirection* arg);
+    void setXVector(QSGDirection* arg);
 
-    void setYVector(QSGStochasticDirection* arg);
+    void setYVector(QSGDirection* arg);
 
     void setBloat(bool arg);
 
@@ -364,8 +364,8 @@ private:
     qreal m_rotationSpeed;
     qreal m_rotationSpeedVariation;
     bool m_autoRotation;
-    QSGStochasticDirection* m_xVector;
-    QSGStochasticDirection* m_yVector;
+    QSGDirection* m_xVector;
+    QSGDirection* m_yVector;
 
     QList<QSGSprite*> m_sprites;
     QSGSpriteEngine* m_spriteEngine;
diff --git a/src/declarative/particles/qsgmodelparticle.cpp b/src/declarative/particles/qsgmodelparticle.cpp
deleted file mode 100644
index c013d726a3..0000000000
--- a/src/declarative/particles/qsgmodelparticle.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Declarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qsgmodelparticle_p.h"
-#include <QtDeclarative/private/qsgvisualitemmodel_p.h>
-#include <qsgnode.h>
-#include <QTimer>
-#include <QDebug>
-
-QT_BEGIN_NAMESPACE
-/*!
-    \qmlclass ModelParticle QSGModelParticle
-    \inqmlmodule QtQuick.Particles 2
-    \inherits ParticlePainter
-    \brief The ModelParticle element allows you to specify a model and delegate pair to paint particles.
-
-*/
-
-
-/*!
-    \qmlmethod void QtQuick.Particles2::ModelParticle::freeze(Item item)
-
-    Suspends the flow of time for the logical particle which item represents, allowing you to control its movement.
-*/
-
-/*!
-    \qmlmethod void QtQuick.Particles2::ModelParticle::unfreeze(Item item)
-
-    Restarts the flow of time for the logical particle which item represents, allowing it to be moved by the particle system again.
-*/
-
-/*!
-    \qmlproperty bool QtQuick.Particles2::ModelParticle::fade
-
-    If true, the item will automatically be faded in and out
-    at the ends of its lifetime. If false, you will have to
-    implement any entry effect yourself.
-
-    Default is true.
-*/
-
-/*!
-    \qmlproperty model QtQuick.Particles2::ModelParticle::model
-
-    The model to use as a data source. Every time a particle is
-    emitted, the next model entry will be used with a delegate
-    to visualize it.
-*/
-
-/*!
-    \qmlproperty Component QtQuick.Particles2::ModelParticle::delegate
-
-    An instance of the delegate will be created for every model
-    entry, and moved along with it.
-*/
-
-QSGModelParticle::QSGModelParticle(QSGItem *parent) :
-    QSGParticlePainter(parent), m_ownModel(false), m_comp(0), m_model(0), m_fade(true), m_modelCount(0)
-{
-    setFlag(QSGItem::ItemHasContents);
-    QTimer* manageDelegates = new QTimer(this);//TODO: don't leak
-    connect(manageDelegates, SIGNAL(timeout()),
-            this, SLOT(processPending()));
-    manageDelegates->setInterval(16);
-    manageDelegates->setSingleShot(false);
-    manageDelegates->start();
-}
-
-QSGModelParticle::~QSGModelParticle()
-{
-    if (m_ownModel)
-        delete m_model;
-}
-
-QVariant QSGModelParticle::model() const
-{
-    return m_dataSource;
-}
-
-void QSGModelParticle::setModel(const QVariant &arg)
-{
-    if (arg == m_dataSource)
-        return;
-    m_dataSource = arg;
-    if (qobject_cast<QSGVisualDataModel*>(arg.value<QObject*>())) {
-        if (m_ownModel && m_model)
-            delete m_model;
-        m_model = qobject_cast<QSGVisualDataModel*>(arg.value<QObject*>());
-        m_ownModel = false;
-    }else{
-        if (!m_model || !m_ownModel)
-            m_model = new QSGVisualDataModel(qmlContext(this));
-        m_model->setModel(m_dataSource);
-        m_ownModel = true;
-    }
-    if (m_comp)
-        m_model->setDelegate(m_comp);
-    emit modelChanged();
-    emit modelCountChanged();
-    connect(m_model, SIGNAL(countChanged()),
-            this, SIGNAL(modelCountChanged()));
-    connect(m_model, SIGNAL(countChanged()),
-            this, SLOT(updateCount()));
-    updateCount();
-}
-
-void QSGModelParticle::updateCount()
-{
-    int newCount = 0;
-    if (m_model)
-        newCount = m_model->count();
-    if (newCount < 0)
-        return;//WTF?
-    if (m_modelCount == 0 || newCount == 0){
-        m_available.clear();
-        for (int i=0; i<newCount; i++)
-            m_available << i;
-    }else if (newCount < m_modelCount){
-        for (int i=newCount; i<m_modelCount; i++) //existing ones must leave normally, but aren't readded
-            m_available.removeAll(i);
-    }else if (newCount > m_modelCount){
-        for (int i=m_modelCount; i<newCount; i++)
-            m_available << i;
-    }
-    m_modelCount = newCount;
-}
-
-QDeclarativeComponent *QSGModelParticle::delegate() const
-{
-    if (m_model)
-        return m_model->delegate();
-    return 0;
-}
-
-void QSGModelParticle::setDelegate(QDeclarativeComponent *comp)
-{
-    if (QSGVisualDataModel *dataModel = qobject_cast<QSGVisualDataModel*>(m_model))
-        if (comp == dataModel->delegate())
-            return;
-    m_comp = comp;
-    if (m_model)
-        m_model->setDelegate(comp);
-    emit delegateChanged();
-}
-
-int QSGModelParticle::modelCount() const
-{
-    if (m_model)
-        const_cast<QSGModelParticle*>(this)->updateCount();//TODO: Investigate why this doesn't get called properly
-    return m_modelCount;
-}
-
-
-void QSGModelParticle::freeze(QSGItem* item)
-{
-    m_stasis << item;
-}
-
-
-void QSGModelParticle::unfreeze(QSGItem* item)
-{
-    m_stasis.remove(item);
-}
-
-void QSGModelParticle::initialize(int gIdx, int pIdx)
-{
-    if (!m_model || !m_model->count())
-        return;
-    if (m_available.isEmpty())
-        return;
-    m_requests << m_system->m_groupData[gIdx]->data[pIdx];
-}
-
-void QSGModelParticle::processPending()
-{//can't create/delete arbitrary items in the render thread
-    foreach (QSGItem* item, m_deletables){
-        item->setVisible(false);
-        if (m_fade)
-            item->setOpacity(0.);
-        m_model->release(item);
-        m_activeCount--;
-    }
-    m_deletables.clear();
-
-    foreach (QSGParticleData* datum, m_requests){
-        if (datum->delegate){
-            if (m_stasis.contains(datum->delegate))
-                qWarning() << "Current model particles prefers overwrite:false";
-            //remove old item from the particle that is dying to make room for this one
-            m_deletables << datum->delegate;
-            m_available << datum->modelIndex;
-            datum->modelIndex = -1;
-            datum->delegate = 0;
-        }
-
-        if (!m_available.isEmpty()){
-            datum->delegate = m_model->item(m_available.first());
-            datum->modelIndex = m_available.first();
-            m_available.pop_front();
-            QSGModelParticleAttached* mpa = qobject_cast<QSGModelParticleAttached*>(qmlAttachedPropertiesObject<QSGModelParticle>(datum->delegate));
-            if (mpa){
-                mpa->m_mp = this;
-                mpa->attach();
-            }
-            datum->delegate->setParentItem(this);
-            if (m_fade)
-                datum->delegate->setOpacity(0.0);
-            datum->delegate->setVisible(false);//Will be set to true when we prepare the next frame
-            m_activeCount++;
-        }
-    }
-    m_requests.clear();
-}
-
-void QSGModelParticle::commit(int gIdx, int pIdx)
-{
-    //No-op unless we start copying the data.
-}
-
-void QSGModelParticle::reset()
-{
-    QSGParticlePainter::reset();
-    //TODO: Cleanup items?
-    //m_available.clear();//Should this be reset too?
-    //m_pendingItems.clear();//TODO: Should this be done? If so, Emit signal?
-}
-
-
-QSGNode* QSGModelParticle::updatePaintNode(QSGNode* n, UpdatePaintNodeData* d)
-{
-    //Dummy update just to get painting tick
-    if (m_pleaseReset){
-        m_pleaseReset = false;
-        reset();
-    }
-    prepareNextFrame();
-
-    update();//Get called again
-    if (n)
-        n->markDirty(QSGNode::DirtyMaterial);
-    return QSGItem::updatePaintNode(n,d);
-}
-
-void QSGModelParticle::prepareNextFrame()
-{
-    if (!m_system)
-        return;
-    qint64 timeStamp = m_system->systemSync(this);
-    qreal curT = timeStamp/1000.0;
-    qreal dt = curT - m_lastT;
-    m_lastT = curT;
-    if (!m_activeCount)
-        return;
-
-    //TODO: Size, better fade?
-    foreach (const QString &str, m_particles){
-        int gIdx = m_system->m_groupIds[str];
-        int count = m_system->m_groupData[gIdx]->size();
-
-        for (int i=0; i<count; i++){
-            QSGParticleData* data = m_system->m_groupData[gIdx]->data[i];
-            if (!data || !data->delegate)
-                continue;
-            qreal t = ((timeStamp/1000.0) - data->t) / data->lifeSpan;
-            if (m_stasis.contains(data->delegate)) {
-                data->t += dt;//Stasis effect
-                continue;
-            }
-            if (t >= 1.0){//Usually happens from load
-                m_available << data->modelIndex;
-                m_deletables << data->delegate;
-                data->modelIndex = -1;
-                data->delegate = 0;
-                continue;
-            }else{//Fade
-                data->delegate->setVisible(true);
-                if (m_fade){
-                    qreal o = 1.;
-                    if (t<0.2)
-                        o = t*5;
-                    if (t>0.8)
-                        o = (1-t)*5;
-                    data->delegate->setOpacity(o);
-                }
-            }
-            data->delegate->setX(data->curX() - data->delegate->width()/2  - m_systemOffset.x());
-            data->delegate->setY(data->curY() - data->delegate->height()/2 - m_systemOffset.y());
-        }
-    }
-}
-
-QSGModelParticleAttached *QSGModelParticle::qmlAttachedProperties(QObject *object)
-{
-    return new QSGModelParticleAttached(object);
-}
-
-QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgmodelparticle_p.h b/src/declarative/particles/qsgmodelparticle_p.h
deleted file mode 100644
index c6dd40d51e..0000000000
--- a/src/declarative/particles/qsgmodelparticle_p.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Declarative module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef DATAPARTICLE_H
-#define DATAPARTICLE_H
-#include "qsgparticlepainter_p.h"
-#include <QPointer>
-#include <QSet>
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Declarative)
-class QSGVisualDataModel;
-class QSGModelParticleAttached;
-
-class QSGModelParticle : public QSGParticlePainter
-{
-    Q_OBJECT
-
-    Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged)
-    Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
-    Q_PROPERTY(int modelCount READ modelCount NOTIFY modelCountChanged)
-    Q_PROPERTY(bool fade READ fade WRITE setFade NOTIFY fadeChanged)
-    Q_CLASSINFO("DefaultProperty", "delegate")
-public:
-    explicit QSGModelParticle(QSGItem *parent = 0);
-    virtual ~QSGModelParticle();
-    QVariant model() const;
-    void setModel(const QVariant &);
-
-    QDeclarativeComponent *delegate() const;
-    void setDelegate(QDeclarativeComponent *);
-
-    int modelCount() const;
-
-    bool fade() const { return m_fade; }
-
-    virtual QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *);
-
-    static QSGModelParticleAttached *qmlAttachedProperties(QObject *object);
-signals:
-    void modelChanged();
-    void delegateChanged();
-    void modelCountChanged();
-    void fadeChanged();
-
-public slots:
-    void freeze(QSGItem* item);
-    void unfreeze(QSGItem* item);
-
-    void setFade(bool arg){if (arg == m_fade) return; m_fade = arg; emit fadeChanged();}
-protected:
-    virtual void reset();
-    virtual void commit(int gIdx, int pIdx);
-    virtual void initialize(int gIdx, int pIdx);
-    void prepareNextFrame();
-private slots:
-    void updateCount();
-    void processPending();
-private:
-    bool m_ownModel;
-    QDeclarativeComponent* m_comp;
-    QSGVisualDataModel *m_model;
-    QVariant m_dataSource;
-    QList<QSGItem*> m_deletables;
-    QList< QSGParticleData* > m_requests;
-    bool m_fade;
-
-    QList<QSGItem*> m_pendingItems;
-    QList<int> m_available;
-    QSet<QSGItem*> m_stasis;
-    qreal m_lastT;
-    int m_activeCount;
-    int m_modelCount;
-};
-
-class QSGModelParticleAttached : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(QSGModelParticle* particle READ particle CONSTANT)
-public:
-    QSGModelParticleAttached(QObject* parent)
-        : QObject(parent), m_mp(0)
-    {;}
-    QSGModelParticle* particle() {return m_mp;}
-    void detach(){emit detached();}
-    void attach(){emit attached();}
-private:
-    QSGModelParticle* m_mp;
-    friend class QSGModelParticle;
-Q_SIGNALS:
-    void detached();
-    void attached();
-};
-
-QT_END_NAMESPACE
-
-QML_DECLARE_TYPEINFO(QSGModelParticle, QML_HAS_ATTACHED_PROPERTIES)
-
-QT_END_HEADER
-#endif // DATAPARTICLE_H
diff --git a/src/declarative/particles/qsgparticleaffector.cpp b/src/declarative/particles/qsgparticleaffector.cpp
index 4a3bba6e6d..3554121a2b 100644
--- a/src/declarative/particles/qsgparticleaffector.cpp
+++ b/src/declarative/particles/qsgparticleaffector.cpp
@@ -73,16 +73,16 @@ QT_BEGIN_NAMESPACE
     By default, no groups are specified.
 */
 /*!
-    \qmlproperty bool QtQuick.Particles2::Affector::active
-    If active is set to false, this affector will not affect any particles.
+    \qmlproperty bool QtQuick.Particles2::Affector::enabled
+    If enabled is set to false, this affector will not affect any particles.
 
     Usually this is used to conditionally turn an affector on or off.
 
     Default value is true.
 */
 /*!
-    \qmlproperty bool QtQuick.Particles2::Affector::onceOff
-    If onceOff is set to true, this affector will only affect each particle
+    \qmlproperty bool QtQuick.Particles2::Affector::once
+    If once is set to true, this affector will only affect each particle
     once in their lifetimes.
 
     Default value is false.
@@ -93,27 +93,24 @@ QT_BEGIN_NAMESPACE
     non-rectangular area.
 */
 /*!
-    \qmlproperty bool QtQuick.Particles2::Affector::signal
-    If this is set to true, then an affected(x,y) signal will be emitted each
-    time this affector would affect a particle.
+    \qmlsignal QtQuick.Particles2::Affector::onAffected(x, y)
 
-    For Affector only, this will happen irrespective of whether any changes
-    are made to the particle, for other Affectors the signal will only fire
-    if the particle is actually affected.
+    This signal is emitted each time the affector actually affects a particle.
 
-    Default value is false.
-*/
+    x,y are the coordinates of the affected particle, relative to the ParticleSystem.
 
+*/
 //TODO: Document particle 'type'
 /*!
     \qmlsignal QtQuick.Particles2::Affector::affectParticle(particle, dt)
 
-    This handler is called when a particle is selected to be affected.
+    This handler is called when particles are selected to be affected.
 
     dt is the time since the last time it was affected. Use dt to normalize
     trajectory manipulations to real time.
 
-    This handler is usually not available on inherited types.
+    Note that JS is slower to execute, so it is not recommended to use this in
+    high-volume particle systems.
 */
 /*!
     \qmlsignal QtQuick.Particles2::Affector::affected(x, y)
@@ -124,32 +121,32 @@ QT_BEGIN_NAMESPACE
     x,y is the particles current position.
 */
 QSGParticleAffector::QSGParticleAffector(QSGItem *parent) :
-    QSGItem(parent), m_needsReset(false), m_system(0), m_active(true)
-  , m_updateIntSet(false), m_shape(new QSGParticleExtruder(this)), m_signal(false)
+    QSGItem(parent), m_needsReset(false), m_system(0), m_enabled(true)
+  , m_updateIntSet(false), m_shape(new QSGParticleExtruder(this))
 {
 }
 
-bool QSGParticleAffector::isAffectConnected()
+bool QSGParticleAffector::isAffectedConnected()
 {
-    static int idx = QObjectPrivate::get(this)->signalIndex("affectParticle(QDeclarativeV8Handle,qreal)");
+    static int idx = QObjectPrivate::get(this)->signalIndex("affected(qreal,qreal)");
     return QObjectPrivate::get(this)->isSignalConnected(idx);
 }
 
+
 void QSGParticleAffector::componentComplete()
 {
     if (!m_system && qobject_cast<QSGParticleSystem*>(parentItem()))
         setSystem(qobject_cast<QSGParticleSystem*>(parentItem()));
-    if (!m_system)
-        qWarning() << "Affector created without a particle system specified";//TODO: useful QML warnings, like line number?
     QSGItem::componentComplete();
 }
 
 void QSGParticleAffector::affectSystem(qreal dt)
 {
-    if (!m_active)
+    if (!m_enabled)
         return;
     //If not reimplemented, calls affect particle per particle
     //But only on particles in targeted system/area
+    bool affectedConnected = isAffectedConnected();
     if (m_updateIntSet){
         m_groups.clear();
         foreach (const QString &p, m_particles)
@@ -167,16 +164,16 @@ void QSGParticleAffector::affectSystem(qreal dt)
                     continue;
                 //Need to have previous location for affected anyways
                 QPointF curPos;
-                if (m_signal || (width() && height()))
+                if (affectedConnected || (width() && height()))
                     curPos = QPointF(d->curX(), d->curY());
                 if (width() == 0 || height() == 0
                         || m_shape->contains(QRectF(m_offset.x(), m_offset.y(), width(), height()),curPos)){
-                    if (m_collisionParticles.isEmpty() || isColliding(d)){
+                    if (m_whenCollidingWith.isEmpty() || isColliding(d)){
                         if (affectParticle(d, dt)){
                             m_system->m_needsReset << d;
                             if (m_onceOff)
                                 m_onceOffed << qMakePair(d->group, d->index);
-                            if (m_signal)//###Make signal based on if connected, and then m_signal just affects AffectParticle for base?
+                            if (affectedConnected)
                                 emit affected(curPos.x(), curPos.y());
                         }
                     }
@@ -188,12 +185,7 @@ void QSGParticleAffector::affectSystem(qreal dt)
 
 bool QSGParticleAffector::affectParticle(QSGParticleData *d, qreal dt)
 {
-    if (isAffectConnected()){
-        d->update = 0.0;
-        emit affectParticle(d->v8Value(), dt);
-        return d->update == 1.0;
-    }
-    return m_signal;//If signalling, then we always 'null affect' it.
+    return true;
 }
 
 void QSGParticleAffector::reset(QSGParticleData* pd)
@@ -214,7 +206,7 @@ bool QSGParticleAffector::isColliding(QSGParticleData *d)
     qreal myCurX = d->curX();
     qreal myCurY = d->curY();
     qreal myCurSize = d->curSize()/2;
-    foreach (const QString &group, m_collisionParticles){
+    foreach (const QString &group, m_whenCollidingWith){
         foreach (QSGParticleData* other, m_system->m_groupData[m_system->m_groupIds[group]]->data){
             if (!other->stillAlive())
                 continue;
diff --git a/src/declarative/particles/qsgparticleaffector_p.h b/src/declarative/particles/qsgparticleaffector_p.h
index dd279c07b9..c808ef4e76 100644
--- a/src/declarative/particles/qsgparticleaffector_p.h
+++ b/src/declarative/particles/qsgparticleaffector_p.h
@@ -57,11 +57,10 @@ class QSGParticleAffector : public QSGItem
     Q_OBJECT
     Q_PROPERTY(QSGParticleSystem* system READ system WRITE setSystem NOTIFY systemChanged)
     Q_PROPERTY(QStringList particles READ particles WRITE setParticles NOTIFY particlesChanged)
-    Q_PROPERTY(QStringList collisionParticles READ collisionParticles WRITE setCollisionParticles NOTIFY collisionParticlesChanged)
-    Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
-    Q_PROPERTY(bool onceOff READ onceOff WRITE setOnceOff NOTIFY onceOffChanged)
+    Q_PROPERTY(QStringList whenCollidingWith READ whenCollidingWith WRITE setWhenCollidingWith NOTIFY whenCollidingWithChanged)
+    Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
+    Q_PROPERTY(bool once READ onceOff WRITE setOnceOff NOTIFY onceChanged)
     Q_PROPERTY(QSGParticleExtruder* shape READ shape WRITE setShape NOTIFY shapeChanged)
-    Q_PROPERTY(bool signal READ signal WRITE setSignal NOTIFY signalChanged)//TODO: Determine by whether it's connected
 
 public:
     explicit QSGParticleAffector(QSGItem *parent = 0);
@@ -77,9 +76,9 @@ public:
         return m_particles;
     }
 
-    bool active() const
+    bool enabled() const
     {
-        return m_active;
+        return m_enabled;
     }
 
     bool onceOff() const
@@ -92,33 +91,26 @@ public:
         return m_shape;
     }
 
-    bool signal() const
+    QStringList whenCollidingWith() const
     {
-        return m_signal;
-    }
-
-    QStringList collisionParticles() const
-    {
-        return m_collisionParticles;
+        return m_whenCollidingWith;
     }
 
 signals:
-    void affectParticle(QDeclarativeV8Handle particle, qreal dt);
 
     void systemChanged(QSGParticleSystem* arg);
 
     void particlesChanged(QStringList arg);
 
-    void activeChanged(bool arg);
+    void enabledChanged(bool arg);
 
-    void onceOffChanged(bool arg);
+    void onceChanged(bool arg);
 
     void shapeChanged(QSGParticleExtruder* arg);
 
     void affected(qreal x, qreal y);
-    void signalChanged(bool arg);
 
-    void collisionParticlesChanged(QStringList arg);
+    void whenCollidingWithChanged(QStringList arg);
 
 public slots:
 void setSystem(QSGParticleSystem* arg)
@@ -139,11 +131,11 @@ void setParticles(QStringList arg)
     }
 }
 
-void setActive(bool arg)
+void setEnabled(bool arg)
 {
-    if (m_active != arg) {
-        m_active = arg;
-        emit activeChanged(arg);
+    if (m_enabled != arg) {
+        m_enabled = arg;
+        emit enabledChanged(arg);
     }
 }
 
@@ -152,7 +144,7 @@ void setOnceOff(bool arg)
     if (m_onceOff != arg) {
         m_onceOff = arg;
         m_needsReset = true;
-        emit onceOffChanged(arg);
+        emit onceChanged(arg);
     }
 }
 
@@ -164,19 +156,11 @@ void setShape(QSGParticleExtruder* arg)
     }
 }
 
-void setSignal(bool arg)
-{
-    if (m_signal != arg) {
-        m_signal = arg;
-        emit signalChanged(arg);
-    }
-}
-
-void setCollisionParticles(QStringList arg)
+void setWhenCollidingWith(QStringList arg)
 {
-    if (m_collisionParticles != arg) {
-        m_collisionParticles = arg;
-        emit collisionParticlesChanged(arg);
+    if (m_whenCollidingWith != arg) {
+        m_whenCollidingWith = arg;
+        emit whenCollidingWithChanged(arg);
     }
 }
 
@@ -187,10 +171,10 @@ protected:
     QSGParticleSystem* m_system;
     QStringList m_particles;
     bool activeGroup(int g) {return m_groups.isEmpty() || m_groups.contains(g);}
-    bool m_active;
+    bool m_enabled;
     virtual void componentComplete();
     QPointF m_offset;
-    bool isAffectConnected();
+    bool isAffectedConnected();
 private:
     QSet<int> m_groups;
     QSet<QPair<int, int> > m_onceOffed;
@@ -200,9 +184,7 @@ private:
 
     QSGParticleExtruder* m_shape;
 
-    bool m_signal;
-
-    QStringList m_collisionParticles;
+    QStringList m_whenCollidingWith;
 
     bool isColliding(QSGParticleData* d);
 private slots:
diff --git a/src/declarative/particles/qsgparticleemitter.cpp b/src/declarative/particles/qsgparticleemitter.cpp
index 6519bf5f9e..d44ad689ee 100644
--- a/src/declarative/particles/qsgparticleemitter.cpp
+++ b/src/declarative/particles/qsgparticleemitter.cpp
@@ -117,21 +117,17 @@ QT_BEGIN_NAMESPACE
 */
 
 /*!
-    \qmlproperty int QtQuick.Particles2::Emitter::emitCap
+    \qmlproperty int QtQuick.Particles2::Emitter::maximumEmitted
 
     The maximum number of particles at a time that this emitter will have alive.
 
     This can be set as a performance optimization (when using burst and pulse) or
-    to stagger emissions. The default value is emitRate * lifeSpan in seconds, which
-    is the number of particles that would be alive at any one time given the default settings.
-*/
-/*!
-    \qmlproperty bool QtQuick.Particles2::Emitter::noCap
+    to stagger emissions.
 
-    If set to true, the emitCap will be ignored and this emitter will never skip emitting
-    a particle based on how many it has alive.
+    If this is set to a number below zero, then there is no maximum limit on the number
+    of particles this emitter can have alive.
 
-    Default value is false.
+    The default value is -1.
 */
 /*!
     \qmlproperty int QtQuick.Particles2::Emitter::startTime
@@ -187,19 +183,38 @@ QT_BEGIN_NAMESPACE
 */
 //TODO: Document particle 'type'
 /*!
-    \qmlsignal QtQuick.Particles2::Emitter::emitParticle(particle)
+    \qmlsignal QtQuick.Particles2::Emitter::onEmitParticle(Particle particle)
 
     This handler is called when a particle is emitted. You can modify particle
     attributes from within the handler.
+
+    Note that JS is slower to execute, so it is not recommended to use this in
+    high-volume particle systems.
+*/
+
+/*! \qmlmethod QtQuick.Particles2::Emitter::burst(int count)
+
+    Emits count particles from this emitter immediately.
 */
 
+/*! \qmlmethod QtQuick.Particles2::Emitter::burst(int x, int y, int count)
+
+    Emits count particles from this emitter immediately. The particles are emitted
+    as if the Emitter was positioned at x,y but all other properties are the same.
+*/
+
+/*! \qmlmethod QtQuick.Particles2::Emitter::pulse(real duration)
+
+    If the emitter is not enabled, enables it for duration seconds and then switches
+    it back off.
+*/
 
 QSGParticleEmitter::QSGParticleEmitter(QSGItem *parent) :
     QSGItem(parent)
   , m_particlesPerSecond(10)
   , m_particleDuration(1000)
   , m_particleDurationVariation(0)
-  , m_emitting(true)
+  , m_enabled(true)
   , m_system(0)
   , m_extruder(0)
   , m_defaultExtruder(0)
@@ -215,11 +230,11 @@ QSGParticleEmitter::QSGParticleEmitter(QSGItem *parent) :
   , m_last_timestamp(-1)
   , m_last_emission(0)
   , m_startTime(0)
-  , m_overwrite(false)
+  , m_overwrite(true)
 
 {
     //TODO: Reset speed/acc back to null vector? Or allow null pointer?
-    connect(this, SIGNAL(maxParticleCountChanged(int)),
+    connect(this, SIGNAL(maximumEmittedChanged(int)),
             this, SIGNAL(particleCountChanged()));
     connect(this, SIGNAL(particlesPerSecondChanged(qreal)),
             this, SIGNAL(particleCountChanged()));
@@ -243,16 +258,14 @@ void QSGParticleEmitter::componentComplete()
 {
     if (!m_system && qobject_cast<QSGParticleSystem*>(parentItem()))
         setSystem(qobject_cast<QSGParticleSystem*>(parentItem()));
-    if (!m_system)
-        qWarning() << "Emitter created without a particle system specified";//TODO: useful QML warnings, like line number?
     QSGItem::componentComplete();
 }
 
-void QSGParticleEmitter::setEmitting(bool arg)
+void QSGParticleEmitter::setEnabled(bool arg)
 {
-    if (m_emitting != arg) {
-        m_emitting = arg;
-        emit emittingChanged(arg);
+    if (m_enabled != arg) {
+        m_enabled = arg;
+        emit enabledChanged(arg);
     }
 }
 
@@ -270,7 +283,7 @@ void QSGParticleEmitter::pulse(qreal seconds)
 {
     if (!particleCount())
         qWarning() << "pulse called on an emitter with a particle count of zero";
-    if (!m_emitting)
+    if (!m_enabled)
         m_burstLeft = seconds*1000.0;//TODO: Change name to match
 }
 
@@ -302,8 +315,9 @@ void QSGParticleEmitter::setMaxParticleCount(int arg)
             disconnect(this, SIGNAL(particleDurationChanged(int)),
                     this, SIGNAL(particleCountChanged()));
         }
+        m_overwrite = arg < 0;
         m_maxParticleCount = arg;
-        emit maxParticleCountChanged(arg);
+        emit maximumEmittedChanged(arg);
     }
 }
 
@@ -331,7 +345,7 @@ void QSGParticleEmitter::emitWindow(int timeStamp)
 {
     if (m_system == 0)
         return;
-    if ((!m_emitting || !m_particlesPerSecond)&& !m_burstLeft && m_burstQueue.isEmpty()){
+    if ((!m_enabled || !m_particlesPerSecond)&& !m_burstLeft && m_burstQueue.isEmpty()){
         m_reset_last = true;
         return;
     }
@@ -339,7 +353,7 @@ void QSGParticleEmitter::emitWindow(int timeStamp)
     if (m_reset_last) {
         m_last_emitter = m_last_last_emitter = QPointF(x(), y());
         if (m_last_timestamp == -1)
-            m_last_timestamp = timeStamp/1000. - m_startTime;
+            m_last_timestamp = (timeStamp - m_startTime)/1000.;
         else
             m_last_timestamp = timeStamp/1000.;
         m_last_emission = m_last_timestamp;
@@ -350,12 +364,11 @@ void QSGParticleEmitter::emitWindow(int timeStamp)
     if (m_burstLeft){
         m_burstLeft -= timeStamp - m_last_timestamp * 1000.;
         if (m_burstLeft < 0){
-            if (!m_emitting)
+            if (!m_enabled)
                 timeStamp += m_burstLeft;
             m_burstLeft = 0;
         }
     }
-
     qreal time = timeStamp / 1000.;
     qreal particleRatio = 1. / m_particlesPerSecond;
     qreal pt = m_last_emission;
@@ -379,7 +392,7 @@ void QSGParticleEmitter::emitWindow(int timeStamp)
     qreal sizeAtEnd = m_particleEndSize >= 0 ? m_particleEndSize : m_particleSize;
     qreal emitter_x_offset = m_last_emitter.x() - x();
     qreal emitter_y_offset = m_last_emitter.y() - y();
-    if (!m_burstQueue.isEmpty() && !m_burstLeft && !m_emitting)//'outside time' emissions only
+    if (!m_burstQueue.isEmpty() && !m_burstLeft && !m_enabled)//'outside time' emissions only
         pt = time;
     while ((pt < time && m_emitCap) || !m_burstQueue.isEmpty()) {
         //int pos = m_last_particle % m_particle_count;
diff --git a/src/declarative/particles/qsgparticleemitter_p.h b/src/declarative/particles/qsgparticleemitter_p.h
index 9e1fc7a9d8..8ed7ee7053 100644
--- a/src/declarative/particles/qsgparticleemitter_p.h
+++ b/src/declarative/particles/qsgparticleemitter_p.h
@@ -46,7 +46,7 @@
 #include <QDebug>
 #include "qsgparticlesystem_p.h"
 #include "qsgparticleextruder_p.h"
-#include "qsgstochasticdirection_p.h"
+#include "qsgdirection_p.h"
 
 #include <QList>
 #include <QPair>
@@ -63,21 +63,20 @@ class QSGParticleEmitter : public QSGItem
     Q_PROPERTY(QSGParticleSystem* system READ system WRITE setSystem NOTIFY systemChanged)
     Q_PROPERTY(QString particle READ particle WRITE setParticle NOTIFY particleChanged)
     Q_PROPERTY(QSGParticleExtruder* shape READ extruder WRITE setExtruder NOTIFY extruderChanged)
-    Q_PROPERTY(bool emitting READ emitting WRITE setEmitting NOTIFY emittingChanged)
+    Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
     Q_PROPERTY(int startTime READ startTime WRITE setStartTime NOTIFY startTimeChanged)
-    Q_PROPERTY(bool noCap READ overwrite WRITE setOverWrite NOTIFY overwriteChanged)
 
     Q_PROPERTY(qreal emitRate READ particlesPerSecond WRITE setParticlesPerSecond NOTIFY particlesPerSecondChanged)
     Q_PROPERTY(int lifeSpan READ particleDuration WRITE setParticleDuration NOTIFY particleDurationChanged)
     Q_PROPERTY(int lifeSpanVariation READ particleDurationVariation WRITE setParticleDurationVariation NOTIFY particleDurationVariationChanged)
-    Q_PROPERTY(int emitCap READ maxParticleCount WRITE setMaxParticleCount NOTIFY maxParticleCountChanged)
+    Q_PROPERTY(int maximumEmitted READ maxParticleCount WRITE setMaxParticleCount NOTIFY maximumEmittedChanged)
 
     Q_PROPERTY(qreal size READ particleSize WRITE setParticleSize NOTIFY particleSizeChanged)
     Q_PROPERTY(qreal endSize READ particleEndSize WRITE setParticleEndSize NOTIFY particleEndSizeChanged)
     Q_PROPERTY(qreal sizeVariation READ particleSizeVariation WRITE setParticleSizeVariation NOTIFY particleSizeVariationChanged)
 
-    Q_PROPERTY(QSGStochasticDirection *speed READ speed WRITE setSpeed NOTIFY speedChanged)
-    Q_PROPERTY(QSGStochasticDirection *acceleration READ acceleration WRITE setAcceleration NOTIFY accelerationChanged)
+    Q_PROPERTY(QSGDirection *speed READ speed WRITE setSpeed NOTIFY speedChanged)
+    Q_PROPERTY(QSGDirection *acceleration READ acceleration WRITE setAcceleration NOTIFY accelerationChanged)
     Q_PROPERTY(qreal speedFromMovement READ speedFromMovement WRITE setSpeedFromMovement NOTIFY speedFromMovementChanged)
 
     Q_ENUMS(Lifetime)
@@ -90,9 +89,9 @@ public:
         InfiniteLife = QSGParticleSystem::maxLife
     };
 
-    bool emitting() const
+    bool enabled() const
     {
-        return m_emitting;
+        return m_enabled;
     }
 
     qreal particlesPerSecond() const
@@ -127,7 +126,7 @@ signals:
     void emitParticle(QDeclarativeV8Handle particle);
     void particlesPerSecondChanged(qreal);
     void particleDurationChanged(int);
-    void emittingChanged(bool);
+    void enabledChanged(bool);
 
     void systemChanged(QSGParticleSystem* arg);
 
@@ -143,25 +142,23 @@ signals:
 
     void particleSizeVariationChanged(qreal arg);
 
-    void speedChanged(QSGStochasticDirection * arg);
+    void speedChanged(QSGDirection * arg);
 
-    void accelerationChanged(QSGStochasticDirection * arg);
+    void accelerationChanged(QSGDirection * arg);
 
-    void maxParticleCountChanged(int arg);
+    void maximumEmittedChanged(int arg);
     void particleCountChanged();
 
     void speedFromMovementChanged();
 
     void startTimeChanged(int arg);
 
-    void overwriteChanged(bool arg);
-
 public slots:
     void pulse(qreal seconds);
     void burst(int num);
     void burst(int num, qreal x, qreal y);
 
-    void setEmitting(bool arg);
+    void setEnabled(bool arg);
 
     void setParticlesPerSecond(qreal arg)
     {
@@ -179,95 +176,87 @@ public slots:
         }
     }
 
-       void setSystem(QSGParticleSystem* arg)
+    void setSystem(QSGParticleSystem* arg)
     {
         if (m_system != arg) {
             m_system = arg;
             m_system->registerParticleEmitter(this);
             emit systemChanged(arg);
         }
-       }
-
-       void setParticle(QString arg)
-       {
-           if (m_particle != arg) {
-               m_particle = arg;
-               emit particleChanged(arg);
-           }
-       }
+    }
 
-       void setParticleDurationVariation(int arg)
-       {
-           if (m_particleDurationVariation != arg) {
-               m_particleDurationVariation = arg;
-               emit particleDurationVariationChanged(arg);
-           }
-       }
-       void setExtruder(QSGParticleExtruder* arg)
-       {
-           if (m_extruder != arg) {
-               m_extruder = arg;
-               emit extruderChanged(arg);
-           }
-       }
+    void setParticle(QString arg)
+    {
+        if (m_particle != arg) {
+            m_particle = arg;
+            emit particleChanged(arg);
+        }
+    }
 
-       void setParticleSize(qreal arg)
-       {
-           if (m_particleSize != arg) {
-               m_particleSize = arg;
-               emit particleSizeChanged(arg);
-           }
-       }
+    void setParticleDurationVariation(int arg)
+    {
+        if (m_particleDurationVariation != arg) {
+            m_particleDurationVariation = arg;
+            emit particleDurationVariationChanged(arg);
+        }
+    }
+    void setExtruder(QSGParticleExtruder* arg)
+    {
+        if (m_extruder != arg) {
+            m_extruder = arg;
+            emit extruderChanged(arg);
+        }
+    }
 
-       void setParticleEndSize(qreal arg)
-       {
-           if (m_particleEndSize != arg) {
-               m_particleEndSize = arg;
-               emit particleEndSizeChanged(arg);
-           }
-       }
+    void setParticleSize(qreal arg)
+    {
+        if (m_particleSize != arg) {
+            m_particleSize = arg;
+            emit particleSizeChanged(arg);
+        }
+    }
 
-       void setParticleSizeVariation(qreal arg)
-       {
-           if (m_particleSizeVariation != arg) {
-               m_particleSizeVariation = arg;
-               emit particleSizeVariationChanged(arg);
-           }
-       }
+    void setParticleEndSize(qreal arg)
+    {
+        if (m_particleEndSize != arg) {
+            m_particleEndSize = arg;
+            emit particleEndSizeChanged(arg);
+        }
+    }
 
-       void setSpeed(QSGStochasticDirection * arg)
-       {
-           if (m_speed != arg) {
-               m_speed = arg;
-               emit speedChanged(arg);
-           }
-       }
+    void setParticleSizeVariation(qreal arg)
+    {
+        if (m_particleSizeVariation != arg) {
+            m_particleSizeVariation = arg;
+            emit particleSizeVariationChanged(arg);
+        }
+    }
 
-       void setAcceleration(QSGStochasticDirection * arg)
-       {
-           if (m_acceleration != arg) {
-               m_acceleration = arg;
-               emit accelerationChanged(arg);
-           }
-       }
+    void setSpeed(QSGDirection * arg)
+    {
+        if (m_speed != arg) {
+            m_speed = arg;
+            emit speedChanged(arg);
+        }
+    }
 
-       void setMaxParticleCount(int arg);
+    void setAcceleration(QSGDirection * arg)
+    {
+        if (m_acceleration != arg) {
+            m_acceleration = arg;
+            emit accelerationChanged(arg);
+        }
+    }
 
-       void setStartTime(int arg)
-       {
-           if (m_startTime != arg) {
-               m_startTime = arg;
-               emit startTimeChanged(arg);
-           }
-       }
+    void setMaxParticleCount(int arg);
 
-       void setOverWrite(bool arg)
-       {
-           if (m_overwrite != arg) {
-               m_overwrite = arg;
-               emit overwriteChanged(arg);
-           }
-       }
+    void setStartTime(int arg)
+    {
+        if (m_startTime != arg) {
+            m_startTime = arg;
+            emit startTimeChanged(arg);
+        }
+    }
 
        virtual void reset();
 public:
@@ -293,12 +282,12 @@ public:
            return m_particleSizeVariation;
        }
 
-       QSGStochasticDirection * speed() const
+       QSGDirection * speed() const
        {
            return m_speed;
        }
 
-       QSGStochasticDirection * acceleration() const
+       QSGDirection * acceleration() const
        {
            return m_acceleration;
        }
@@ -313,23 +302,18 @@ public:
            return m_startTime;
        }
 
-       bool overwrite() const
-       {
-           return m_overwrite;
-       }
-
 protected:
        qreal m_particlesPerSecond;
        int m_particleDuration;
        int m_particleDurationVariation;
-       bool m_emitting;
+       bool m_enabled;
        QSGParticleSystem* m_system;
        QString m_particle;
        QSGParticleExtruder* m_extruder;
        QSGParticleExtruder* m_defaultExtruder;
        QSGParticleExtruder* effectiveExtruder();
-       QSGStochasticDirection * m_speed;
-       QSGStochasticDirection * m_acceleration;
+       QSGDirection * m_speed;
+       QSGDirection * m_acceleration;
        qreal m_particleSize;
        qreal m_particleEndSize;
        qreal m_particleSizeVariation;
@@ -356,7 +340,7 @@ protected:
 
        bool isEmitConnected();
 private:
-       QSGStochasticDirection m_nullVector;
+       QSGDirection m_nullVector;
 
 };
 
diff --git a/src/declarative/particles/qsgparticleextruder.cpp b/src/declarative/particles/qsgparticleextruder.cpp
index a390bb92ac..73c8ce0a66 100644
--- a/src/declarative/particles/qsgparticleextruder.cpp
+++ b/src/declarative/particles/qsgparticleextruder.cpp
@@ -52,30 +52,14 @@ QT_BEGIN_NAMESPACE
 */
 
 QSGParticleExtruder::QSGParticleExtruder(QObject *parent) :
-    QObject(parent), m_fill(true)
+    QObject(parent)
 {
 }
 
 QPointF QSGParticleExtruder::extrude(const QRectF &rect)
 {
-    if (m_fill)
-        return QPointF(((qreal)rand() / RAND_MAX) * rect.width() + rect.x(),
-                       ((qreal)rand() / RAND_MAX) * rect.height() + rect.y());
-    int side = rand() % 4;
-    switch (side){//TODO: Doesn't this overlap the corners?
-    case 0:
-        return QPointF(rect.x(),
-                       ((qreal)rand() / RAND_MAX) * rect.height() + rect.y());
-    case 1:
-        return QPointF(rect.width() + rect.x(),
-                       ((qreal)rand() / RAND_MAX) * rect.height() + rect.y());
-    case 2:
-        return QPointF(((qreal)rand() / RAND_MAX) * rect.width() + rect.x(),
-                       rect.y());
-    default:
-        return QPointF(((qreal)rand() / RAND_MAX) * rect.width() + rect.x(),
-                       rect.height() + rect.y());
-    }
+    return QPointF(((qreal)rand() / RAND_MAX) * rect.width() + rect.x(),
+                   ((qreal)rand() / RAND_MAX) * rect.height() + rect.y());
 }
 
 bool QSGParticleExtruder::contains(const QRectF &bounds, const QPointF &point)
diff --git a/src/declarative/particles/qsgparticleextruder_p.h b/src/declarative/particles/qsgparticleextruder_p.h
index bb2cc24ac2..b31b80231d 100644
--- a/src/declarative/particles/qsgparticleextruder_p.h
+++ b/src/declarative/particles/qsgparticleextruder_p.h
@@ -55,32 +55,15 @@ QT_MODULE(Declarative)
 class QSGParticleExtruder : public QObject
 {
     Q_OBJECT
-    Q_PROPERTY(bool fill READ fill WRITE setFill NOTIFY fillChanged)//###Should this be base class, or a BoxExtruder?
 
 public:
     explicit QSGParticleExtruder(QObject *parent = 0);
     virtual QPointF extrude(const QRectF &);
-    virtual bool contains(const QRectF &bounds, const QPointF &point);//###Needed for follow emitter, but does it belong? Only marginally conceptually valid, and that's from user's perspective
-    bool fill() const
-    {
-        return m_fill;
-    }
+    virtual bool contains(const QRectF &bounds, const QPointF &point);
 
 signals:
-
-    void fillChanged(bool arg);
-
 public slots:
-
-    void setFill(bool arg)
-    {
-        if (m_fill != arg) {
-            m_fill = arg;
-            emit fillChanged(arg);
-        }
-    }
 protected:
-    bool m_fill;
 };
 
 QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgparticlepainter.cpp b/src/declarative/particles/qsgparticlepainter.cpp
index 97333ff20b..f4639c20a2 100644
--- a/src/declarative/particles/qsgparticlepainter.cpp
+++ b/src/declarative/particles/qsgparticlepainter.cpp
@@ -103,12 +103,16 @@ void QSGParticlePainter::setSystem(QSGParticleSystem *arg)
 
 void QSGParticlePainter::load(QSGParticleData* d)
 {
+    if (m_pleaseReset)
+        return;
     initialize(d->group, d->index);
     m_pendingCommits << qMakePair<int, int>(d->group, d->index);
 }
 
 void QSGParticlePainter::reload(QSGParticleData* d)
 {
+    if (m_pleaseReset)
+        return;
     m_pendingCommits << qMakePair<int, int>(d->group, d->index);
 }
 
diff --git a/src/declarative/particles/qsgparticlesmodule.cpp b/src/declarative/particles/qsgparticlesmodule.cpp
index e6076b925f..9fa0ebad97 100644
--- a/src/declarative/particles/qsgparticlesmodule.cpp
+++ b/src/declarative/particles/qsgparticlesmodule.cpp
@@ -39,18 +39,17 @@
 **
 ****************************************************************************/
 
-#include "qsgangleddirection_p.h"
+#include "qsgangledirection_p.h"
 #include "qsgcustomparticle_p.h"
 #include "qsgellipseextruder_p.h"
-#include "qsgfollowemitter_p.h"
+#include "qsgtrailemitter_p.h"
 #include "qsgfriction_p.h"
 #include "qsggravity_p.h"
 #include "qsgimageparticle_p.h"
 #include "qsgitemparticle_p.h"
-#include "qsgkill_p.h"
+#include "qsgage_p.h"
 #include "qsglineextruder_p.h"
 #include "qsgmaskextruder_p.h"
-#include "qsgmodelparticle_p.h"
 #include "qsgparticleaffector_p.h"
 #include "qsgparticleemitter_p.h"
 #include "qsgparticleextruder_p.h"
@@ -60,12 +59,14 @@
 #include "qsgpointattractor_p.h"
 #include "qsgpointdirection_p.h"
 #include "qsgspritegoal_p.h"
-#include "qsgstochasticdirection_p.h"
-#include "qsgtargeteddirection_p.h"
+#include "qsgdirection_p.h"
+#include "qsgtargetdirection_p.h"
 #include "qsgturbulence_p.h"
 #include "qsgwander_p.h"
 #include "qsgtargetaffector_p.h"
 #include "qsgcumulativedirection_p.h"
+#include "qsgcustomaffector_p.h"
+#include "qsgrectangleextruder_p.h"
 
 QT_BEGIN_NAMESPACE
 
@@ -78,34 +79,35 @@ void QSGParticlesModule::defineModule()
     qmlRegisterType<QSGImageParticle>(uri, 2, 0, "ImageParticle");
     qmlRegisterType<QSGCustomParticle>(uri, 2, 0, "CustomParticle");
     qmlRegisterType<QSGItemParticle>(uri, 2, 0, "ItemParticle");
-    qmlRegisterType<QSGModelParticle>(uri, 2, 0, "ModelParticle");
 
     qmlRegisterType<QSGParticleEmitter>(uri, 2, 0, "Emitter");
-    qmlRegisterType<QSGFollowEmitter>(uri, 2, 0, "FollowEmitter");
+    qmlRegisterType<QSGTrailEmitter>(uri, 2, 0, "TrailEmitter");
 
     qmlRegisterType<QSGEllipseExtruder>(uri, 2, 0, "EllipseShape");
+    qmlRegisterType<QSGRectangleExtruder>(uri, 2, 0, "RectangleShape");
     qmlRegisterType<QSGLineExtruder>(uri, 2, 0, "LineShape");
     qmlRegisterType<QSGMaskExtruder>(uri, 2, 0, "MaskShape");
 
     qmlRegisterType<QSGPointDirection>(uri, 2, 0, "PointDirection");
-    qmlRegisterType<QSGAngledDirection>(uri, 2, 0, "AngledDirection");
-    qmlRegisterType<QSGTargetedDirection>(uri, 2, 0, "TargetedDirection");
+    qmlRegisterType<QSGAngleDirection>(uri, 2, 0, "AngleDirection");
+    qmlRegisterType<QSGTargetDirection>(uri, 2, 0, "TargetDirection");
     qmlRegisterType<QSGCumulativeDirection>(uri, 2, 0, "CumulativeDirection");
 
-    qmlRegisterType<QSGParticleAffector>(uri, 2, 0, "Affector");//useful for the triggered signal
+    qmlRegisterType<QSGCustomAffector>(uri, 2, 0, "Affector");
     qmlRegisterType<QSGWanderAffector>(uri, 2, 0, "Wander");
     qmlRegisterType<QSGFrictionAffector>(uri, 2, 0, "Friction");
-    qmlRegisterType<QSGPointAttractorAffector>(uri, 2, 0, "PointAttractor");
+    qmlRegisterType<QSGAttractorAffector>(uri, 2, 0, "Attractor");
     qmlRegisterType<QSGGravityAffector>(uri, 2, 0, "Gravity");
-    qmlRegisterType<QSGKillAffector>(uri, 2, 0, "Kill");
+    qmlRegisterType<QSGAgeAffector>(uri, 2, 0, "Age");
     qmlRegisterType<QSGSpriteGoalAffector>(uri, 2, 0, "SpriteGoal");
     qmlRegisterType<QSGTurbulenceAffector>(uri, 2, 0 , "Turbulence");
     qmlRegisterType<QSGTargetAffector>(uri, 2, 0 , "Target");
 
     //Exposed just for completeness
-    qmlRegisterType<QSGParticlePainter>(uri, 2, 0, "ParticlePainter");
-    qmlRegisterType<QSGParticleExtruder>(uri, 2, 0, "ParticleExtruder");
-    qmlRegisterType<QSGStochasticDirection>(uri, 2, 0, "NullVector");
+    qmlRegisterUncreatableType<QSGParticleAffector>(uri, 2, 0, "ParticleAffector", "Abstract type. Use one of the inheriting types instead.");
+    qmlRegisterUncreatableType<QSGParticlePainter>(uri, 2, 0, "ParticlePainter", "Abstract type. Use one of the inheriting types instead.");
+    qmlRegisterUncreatableType<QSGParticleExtruder>(uri, 2, 0, "ParticleExtruder", "Abstract type. Use one of the inheriting types instead.");
+    qmlRegisterUncreatableType<QSGDirection>(uri, 2, 0, "NullVector", "Abstract type. Use one of the inheriting types instead.");
 }
 
 QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgparticlesystem.cpp b/src/declarative/particles/qsgparticlesystem.cpp
index 534b1ca8a1..425df349e5 100644
--- a/src/declarative/particles/qsgparticlesystem.cpp
+++ b/src/declarative/particles/qsgparticlesystem.cpp
@@ -48,7 +48,7 @@
 #include "qsgsprite_p.h"
 #include "qsgv8particledata_p.h"
 
-#include "qsgfollowemitter_p.h"//###For auto-follow on states, perhaps should be in emitter?
+#include "qsgtrailemitter_p.h"//###For auto-follow on states, perhaps should be in emitter?
 #include <private/qdeclarativeengine_p.h>
 #include <cmath>
 #include <QDebug>
@@ -98,13 +98,6 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
     To kill all the particles in the system, use a Kill affector.
 */
 
-/*!
-    \qmlproperty int QtQuick.Particles2::ParticleSystem::startTime
-
-    If start time is specified, then the system will simulate up to this time
-    before the system starts playing. This allows you to appear to start with a
-    fully populated particle system, instead of starting with no particles visible.
-*/
 /*!
     \qmlproperty list<Sprite> QtQuick.Particles2::ParticleSystem::particleStates
 
@@ -113,10 +106,55 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
 
     Each QtQuick2::Sprite in this list is interpreted as corresponding to the particle group
     with ths same name. Any transitions defined in these sprites will take effect on the particle
-    groups as well. Additionally FollowEmitters, Affectors and ParticlePainters definined
+    groups as well. Additionally TrailEmitters, Affectors and ParticlePainters definined
     inside one of these sprites are automatically associated with the corresponding particle group.
 */
 
+/*!
+    \qmlmethod void QtQuick.Particles2::ParticleSystem::pause
+
+    Pauses the simulation if it is running.
+
+    \sa resume, paused
+*/
+
+/*!
+    \qmlmethod void QtQuick.Particles2::ParticleSystem::resume
+
+    Resumes the simulation if it is paused.
+
+    \sa pause, paused
+*/
+
+/*!
+    \qmlmethod void QtQuick.Particles2::ParticleSystem::start
+
+    Starts the simulation if it has not already running.
+
+    \sa stop, restart, running
+*/
+
+/*!
+    \qmlmethod void QtQuick.Particles2::ParticleSystem::stop
+
+    Stops the simulation if it is running.
+
+    \sa start, restart, running
+*/
+
+/*!
+    \qmlmethod void QtQuick.Particles2::ParticleSystem::restart
+
+    Stops the simulation if it is running, and then starts it.
+
+    \sa stop, restart, running
+*/
+/*!
+    \qmlmethod void QtQuick.Particles2::ParticleSystem::reset
+
+    Discards all currently existing particles.
+
+*/
 const qreal EPSILON = 0.001;
 //Utility functions for when within 1ms is close enough
 bool timeEqualOrGreater(qreal a, qreal b){
@@ -562,8 +600,8 @@ void QSGParticleData::extendLife(float time)
 }
 
 QSGParticleSystem::QSGParticleSystem(QSGItem *parent) :
-    QSGItem(parent), m_particle_count(0), m_running(true)
-  , m_startTime(0), m_nextIndex(0), m_componentComplete(false), m_spriteEngine(0)
+    QSGItem(parent), m_particle_count(0), m_running(true), m_paused(false)
+  , m_nextIndex(0), m_componentComplete(false), m_spriteEngine(0)
 {
     connect(&m_painterMapper, SIGNAL(mapped(QObject*)),
             this, SLOT(loadPainter(QObject*)));
@@ -663,7 +701,7 @@ void QSGParticleSystem::stateRedirect(QDeclarativeListProperty<QObject> *prop, Q
         a->setSystem(sys);
         return;
     }
-    QSGFollowEmitter* fe = qobject_cast<QSGFollowEmitter*>(value);
+    QSGTrailEmitter* fe = qobject_cast<QSGTrailEmitter*>(value);
     if (fe){
         fe->setParentItem(sys);
         fe->setFollow(sprite->name());
@@ -726,8 +764,9 @@ void QSGParticleSystem::reset()
 
     //### Do affectors need reset too?
 
-    if (m_animation){//reset restarts animation (if running)
-        m_animation->stop();
+    if (m_running) {//reset restarts animation (if running)
+        if ((m_animation->state() == QAbstractAnimation::Running))
+            m_animation->stop();
         m_animation->start();
         if (m_paused)
             m_animation->pause();
@@ -927,7 +966,7 @@ QSGParticleData* QSGParticleSystem::newDatum(int groupId, bool respectLimits, in
     if (m_spriteEngine)
         m_spriteEngine->startSprite(ret->systemIndex, ret->group);
 
-    m_clear = false;
+    m_empty = false;
     return ret;
 }
 
@@ -962,15 +1001,15 @@ void QSGParticleSystem::updateCurrentTime( int currentTime )
 
     //### Elapsed time never shrinks - may cause problems if left emitting for weeks at a time.
     qreal dt = m_timeInt / 1000.;
-    m_timeInt = currentTime + m_startTime;
+    m_timeInt = currentTime;
     qreal time =  m_timeInt / 1000.;
     dt = time - dt;
     m_needsReset.clear();
 
-    bool oldClear = m_clear;
-    m_clear = true;
+    bool oldClear = m_empty;
+    m_empty = true;
     foreach (QSGParticleGroupData* gd, m_groupData)//Recycle all groups and see if they're out of live particles
-        m_clear = m_clear && gd->recycle();
+        m_empty = m_empty && gd->recycle();
 
     if (m_spriteEngine)
         m_spriteEngine->updateSprites(m_timeInt);
@@ -986,8 +1025,8 @@ void QSGParticleSystem::updateCurrentTime( int currentTime )
             if (p && d)
                 p->reload(d);
 
-    if (oldClear != m_clear)
-        clearChanged(m_clear);
+    if (oldClear != m_empty)
+        emptyChanged(m_empty);
 }
 
 int QSGParticleSystem::systemSync(QSGParticlePainter* p)
diff --git a/src/declarative/particles/qsgparticlesystem_p.h b/src/declarative/particles/qsgparticlesystem_p.h
index 17b67d9cce..25a0c87f53 100644
--- a/src/declarative/particles/qsgparticlesystem_p.h
+++ b/src/declarative/particles/qsgparticlesystem_p.h
@@ -222,8 +222,7 @@ class QSGParticleSystem : public QSGItem
     Q_OBJECT
     Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged)
     Q_PROPERTY(bool paused READ isPaused WRITE setPaused NOTIFY pausedChanged)
-    Q_PROPERTY(bool clear READ isClear NOTIFY clearChanged)
-    Q_PROPERTY(int startTime READ startTime WRITE setStartTime NOTIFY startTimeChanged)
+    Q_PROPERTY(bool empty READ isEmpty NOTIFY emptyChanged)
     Q_PROPERTY(QDeclarativeListProperty<QSGSprite> particleStates READ particleStates)
 
 public:
@@ -237,11 +236,6 @@ public:
         return m_running;
     }
 
-    int startTime() const
-    {
-        return m_startTime;
-    }
-
     int count(){ return m_particle_count; }
 
     static const int maxLife = 600000;
@@ -250,13 +244,8 @@ signals:
 
     void systemInitialized();
     void runningChanged(bool arg);
-
-    void startTimeChanged(int arg);
-
-
     void pausedChanged(bool arg);
-
-    void clearChanged(bool arg);
+    void emptyChanged(bool arg);
 
 public slots:
     void start(){setRunning(true);}
@@ -269,16 +258,6 @@ public slots:
     void setRunning(bool arg);
     void setPaused(bool arg);
 
-    void setStartTime(int arg)
-    {
-        m_startTime = arg;
-    }
-
-    void fastForward(int ms)
-    {
-        m_startTime += ms;
-    }
-
     virtual int duration() const { return -1; }
 
 
@@ -323,9 +302,9 @@ public://###but only really for related class usage. Perhaps we should all be fr
         return m_paused;
     }
 
-    bool isClear() const
+    bool isEmpty() const
     {
-        return m_clear;
+        return m_empty;
     }
 
 private:
@@ -336,7 +315,6 @@ private:
     QList<QPointer<QSGParticleAffector> > m_affectors;
     QList<QPointer<QSGParticlePainter> > m_painters;
     QList<QPointer<QSGParticlePainter> > m_syncList;
-    qint64 m_startTime;
     int m_nextGroupId;
     int m_nextIndex;
     QSet<int> m_reusableIndexes;
@@ -351,7 +329,7 @@ private:
     bool m_paused;
     bool m_debugMode;
     bool m_allDead;
-    bool m_clear;
+    bool m_empty;
 };
 
 // Internally, this animation drives all the timing. Painters sync up in their updatePaintNode
diff --git a/src/declarative/particles/qsgpointattractor.cpp b/src/declarative/particles/qsgpointattractor.cpp
index c916e4da94..8c2632f2c8 100644
--- a/src/declarative/particles/qsgpointattractor.cpp
+++ b/src/declarative/particles/qsgpointattractor.cpp
@@ -44,16 +44,16 @@
 #include <QDebug>
 QT_BEGIN_NAMESPACE
 /*!
-    \qmlclass PointAttractor QSGPointAttractorAffector
+    \qmlclass Attractor QSGAttractorAffector
     \inqmlmodule QtQuick.Particles 2
     \inherits Affector
-    \brief The PointAttractor allows you to attract particles towards a specific point.
+    \brief The Attractor allows you to attract particles towards a specific point.
 
     Note that the size and position of this element affects which particles it affects.
     The size of the point attracted to is always 0x0, and the location of that point
     is specified by the pointX and pointY properties.
 
-    Note that PointAttractor has the standard Item x,y,width and height properties.
+    Note that Attractor has the standard Item x,y,width and height properties.
     Like other affectors, these represent the affected area. They
     do not represent the 0x0 point which is the target of the attraction.
 
@@ -62,45 +62,57 @@ QT_BEGIN_NAMESPACE
 
 /*!
     \qmlproperty real QtQuick.Particles2::PointAttractor::pointX
+
+    The x coordinate of the attracting point. This is relative
+    to the x coordinate of the Attractor.
 */
 /*!
     \qmlproperty real QtQuick.Particles2::PointAttractor::pointY
+
+    The x coordinate of the attracting point. This is relative
+    to the x coordinate of the Attractor.
 */
 /*!
     \qmlproperty real QtQuick.Particles2::PointAttractor::strength
+
+    The pull, in units per second, to be exerted on an item one pixel away.
+
+    Depending on how the attraction is proportionalToDistance this may have to
+    be very high or very low to have a reasonable effect on particles at a
+    distance.
 */
 /*!
-    \qmlproperty PhysicsAffects QtQuick.Particles2::PointAttractor::physics
+    \qmlproperty AffectableParameter QtQuick.Particles2::Attractor::affectedParameter
 
     What attribute of particles is directly affected.
     \list
-    \o PointAttractor.Position
-    \o PointAttractor.Velocity
-    \o PointAttractor.Acceleration
+    \o Attractor.Position
+    \o Attractor.Velocity
+    \o Attractor.Acceleration
     \endlist
 */
 /*!
-    \qmlproperty Proportion QtQuick.Particles2::PointAttractor::proportionalToDistance
+    \qmlproperty Proportion QtQuick.Particles2::Attractor::proportionalToDistance
 
     How the distance from the particle to the point affects the strength of the attraction.
 
     \list
-    \o PointAttractor.Constant
-    \o PointAttractor.Linear
-    \o PointAttractor.InverseLinear
-    \o PointAttractor.Quadratic
-    \o PointAttractor.InverseQuadratic
+    \o Attractor.Constant
+    \o Attractor.Linear
+    \o Attractor.InverseLinear
+    \o Attractor.Quadratic
+    \o Attractor.InverseQuadratic
     \endlist
 */
 
 
-QSGPointAttractorAffector::QSGPointAttractorAffector(QSGItem *parent) :
+QSGAttractorAffector::QSGAttractorAffector(QSGItem *parent) :
     QSGParticleAffector(parent), m_strength(0.0), m_x(0), m_y(0)
   , m_physics(Velocity), m_proportionalToDistance(Linear)
 {
 }
 
-bool QSGPointAttractorAffector::affectParticle(QSGParticleData *d, qreal dt)
+bool QSGAttractorAffector::affectParticle(QSGParticleData *d, qreal dt)
 {
     if (m_strength == 0.0)
         return false;
diff --git a/src/declarative/particles/qsgpointattractor_p.h b/src/declarative/particles/qsgpointattractor_p.h
index e2cdd0fdca..75dd47e331 100644
--- a/src/declarative/particles/qsgpointattractor_p.h
+++ b/src/declarative/particles/qsgpointattractor_p.h
@@ -49,15 +49,15 @@ QT_BEGIN_NAMESPACE
 
 QT_MODULE(Declarative)
 
-class QSGPointAttractorAffector : public QSGParticleAffector
+class QSGAttractorAffector : public QSGParticleAffector
 {
     Q_OBJECT
     Q_PROPERTY(qreal strength READ strength WRITE setStrength NOTIFY strengthChanged)
     Q_PROPERTY(qreal pointX READ pointX WRITE setPointX NOTIFY pointXChanged)
     Q_PROPERTY(qreal pointY READ pointY WRITE setPointY NOTIFY pointYChanged)
-    Q_PROPERTY(PhysicsAffects physics READ physics WRITE setPhysics NOTIFY physicsChanged)
+    Q_PROPERTY(AffectableParameters affectedParameter READ affectedParameter WRITE setAffectedParameter NOTIFY affectedParameterChanged)
     Q_PROPERTY(Proportion proportionalToDistance READ proportionalToDistance WRITE setProportionalToDistance NOTIFY proportionalToDistanceChanged)
-    Q_ENUMS(PhysicsAffects)
+    Q_ENUMS(AffectableParameters)
     Q_ENUMS(Proportion)
 
 public:
@@ -69,13 +69,13 @@ public:
         InverseQuadratic
     };
 
-    enum PhysicsAffects {
+    enum AffectableParameters {
         Position,
         Velocity,
         Acceleration
     };
 
-    explicit QSGPointAttractorAffector(QSGItem *parent = 0);
+    explicit QSGAttractorAffector(QSGItem *parent = 0);
 
     qreal strength() const
     {
@@ -92,7 +92,7 @@ public:
         return m_y;
     }
 
-    PhysicsAffects physics() const
+    AffectableParameters affectedParameter() const
     {
         return m_physics;
     }
@@ -110,7 +110,7 @@ signals:
 
     void pointYChanged(qreal arg);
 
-    void physicsChanged(PhysicsAffects arg);
+    void affectedParameterChanged(AffectableParameters arg);
 
     void proportionalToDistanceChanged(Proportion arg);
 
@@ -138,11 +138,11 @@ void setPointY(qreal arg)
         emit pointYChanged(arg);
     }
 }
-void setPhysics(PhysicsAffects arg)
+void setAffectedParameter(AffectableParameters arg)
 {
     if (m_physics != arg) {
         m_physics = arg;
-        emit physicsChanged(arg);
+        emit affectedParameterChanged(arg);
     }
 }
 
@@ -160,7 +160,7 @@ private:
 qreal m_strength;
 qreal m_x;
 qreal m_y;
-PhysicsAffects m_physics;
+AffectableParameters m_physics;
 Proportion m_proportionalToDistance;
 };
 
diff --git a/src/declarative/particles/qsgpointdirection.cpp b/src/declarative/particles/qsgpointdirection.cpp
index 7cc0823eec..dc104c1a81 100644
--- a/src/declarative/particles/qsgpointdirection.cpp
+++ b/src/declarative/particles/qsgpointdirection.cpp
@@ -46,7 +46,7 @@ QT_BEGIN_NAMESPACE
 /*!
     \qmlclass PointDirection QSGPointDirection
     \inqmlmodule QtQuick.Particles 2
-    \inherits StochasticDirection
+    \inherits Direction
     \brief The PointDirection element allows you to specify a direction that varies in x and y components
 
     The PointDirection element allows both the specification of a direction by x and y components,
@@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE
 */
 
 QSGPointDirection::QSGPointDirection(QObject *parent) :
-    QSGStochasticDirection(parent)
+    QSGDirection(parent)
   , m_x(0)
   , m_y(0)
   , m_xVariation(0)
diff --git a/src/declarative/particles/qsgpointdirection_p.h b/src/declarative/particles/qsgpointdirection_p.h
index 6a6beb6623..ca00824a3e 100644
--- a/src/declarative/particles/qsgpointdirection_p.h
+++ b/src/declarative/particles/qsgpointdirection_p.h
@@ -41,7 +41,7 @@
 
 #ifndef POINTVECTOR_H
 #define POINTVECTOR_H
-#include "qsgstochasticdirection_p.h"
+#include "qsgdirection_p.h"
 
 QT_BEGIN_HEADER
 
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
 
 QT_MODULE(Declarative)
 
-class QSGPointDirection : public QSGStochasticDirection
+class QSGPointDirection : public QSGDirection
 {
     Q_OBJECT
     Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged)
diff --git a/src/declarative/particles/qsgrectangleextruder.cpp b/src/declarative/particles/qsgrectangleextruder.cpp
new file mode 100644
index 0000000000..accc88fcdb
--- /dev/null
+++ b/src/declarative/particles/qsgrectangleextruder.cpp
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Declarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qsgrectangleextruder_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+    \qmlclass RectangleShape QSGRectangleExtruder
+    \inqmlmodule QtQuick.Particles 2
+    \brief The RectangleShape element allows you to specify an area for affectors and emitter.
+
+    Just a rectangle.
+*/
+
+QSGRectangleExtruder::QSGRectangleExtruder(QObject *parent) :
+    QObject(parent), m_fill(true)
+{
+}
+
+QPointF QSGRectangleExtruder::extrude(const QRectF &rect)
+{
+    if (m_fill)
+        return QPointF(((qreal)rand() / RAND_MAX) * rect.width() + rect.x(),
+                       ((qreal)rand() / RAND_MAX) * rect.height() + rect.y());
+    int side = rand() % 4;
+    switch (side){//TODO: Doesn't this overlap the corners?
+    case 0:
+        return QPointF(rect.x(),
+                       ((qreal)rand() / RAND_MAX) * rect.height() + rect.y());
+    case 1:
+        return QPointF(rect.width() + rect.x(),
+                       ((qreal)rand() / RAND_MAX) * rect.height() + rect.y());
+    case 2:
+        return QPointF(((qreal)rand() / RAND_MAX) * rect.width() + rect.x(),
+                       rect.y());
+    default:
+        return QPointF(((qreal)rand() / RAND_MAX) * rect.width() + rect.x(),
+                       rect.height() + rect.y());
+    }
+}
+
+bool QSGRectangleExtruder::contains(const QRectF &bounds, const QPointF &point)
+{
+    return bounds.contains(point);
+}
+
+QT_END_NAMESPACE
diff --git a/src/declarative/particles/qsgrectangleextruder_p.h b/src/declarative/particles/qsgrectangleextruder_p.h
new file mode 100644
index 0000000000..5795375c84
--- /dev/null
+++ b/src/declarative/particles/qsgrectangleextruder_p.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Declarative module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef RECTANGLEEXTRUDER_H
+#define RECTANGLEEXTRUDER_H
+
+#include "qsgparticleextruder_p.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Declarative)
+
+class QSGRectangleExtruder : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(bool fill READ fill WRITE setFill NOTIFY fillChanged)
+
+public:
+    explicit QSGRectangleExtruder(QObject *parent = 0);
+    virtual QPointF extrude(const QRectF &);
+    virtual bool contains(const QRectF &bounds, const QPointF &point);
+    bool fill() const
+    {
+        return m_fill;
+    }
+
+signals:
+
+    void fillChanged(bool arg);
+
+public slots:
+
+    void setFill(bool arg)
+    {
+        if (m_fill != arg) {
+            m_fill = arg;
+            emit fillChanged(arg);
+        }
+    }
+protected:
+    bool m_fill;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // RectangleEXTRUDER_H
diff --git a/src/declarative/particles/qsgtargeteddirection.cpp b/src/declarative/particles/qsgtargetdirection.cpp
similarity index 81%
rename from src/declarative/particles/qsgtargeteddirection.cpp
rename to src/declarative/particles/qsgtargetdirection.cpp
index 696cdfa915..d9a3ce5a74 100644
--- a/src/declarative/particles/qsgtargeteddirection.cpp
+++ b/src/declarative/particles/qsgtargetdirection.cpp
@@ -39,41 +39,41 @@
 **
 ****************************************************************************/
 
-#include "qsgtargeteddirection_p.h"
+#include "qsgtargetdirection_p.h"
 #include "qsgparticleemitter_p.h"
 #include <cmath>
 #include <QDebug>
 
 QT_BEGIN_NAMESPACE
 /*!
-    \qmlclass TargetedDirection QSGTargetedDirection
+    \qmlclass TargetDirection QSGTargetDirection
     \inqmlmodule QtQuick.Particles 2
-    \inherits StochasticDirection
-    \brief The TargetedDirection element allows you to specify a direction towards the target point
+    \inherits Direction
+    \brief The TargetDirection element allows you to specify a direction towards the target point
 
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::TargetedDirection::targetX
+    \qmlproperty real QtQuick.Particles2::TargetDirection::targetX
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::TargetedDirection::targetY
+    \qmlproperty real QtQuick.Particles2::TargetDirection::targetY
 */
 /*!
-    \qmlproperty Item QtQuick.Particles2::TargetedDirection::targetItem
+    \qmlproperty Item QtQuick.Particles2::TargetDirection::targetItem
     If specified, this will take precedence over targetX and targetY.
     The targeted point will be the center of the specified Item
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::TargetedDirection::targetVariation
+    \qmlproperty real QtQuick.Particles2::TargetDirection::targetVariation
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::TargetedDirection::magnitude
+    \qmlproperty real QtQuick.Particles2::TargetDirection::magnitude
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::TargetedDirection::magnitudeVariation
+    \qmlproperty real QtQuick.Particles2::TargetDirection::magnitudeVariation
 */
 /*!
-    \qmlproperty bool QtQuick.Particles2::TargetedDirection::proportionalMagnitude
+    \qmlproperty bool QtQuick.Particles2::TargetDirection::proportionalMagnitude
 
     If true, then the value of magnitude and magnitudeVariation shall be interpreted as multiples
     of the distance between the source point and the target point, per second.
@@ -82,8 +82,8 @@ QT_BEGIN_NAMESPACE
     pixels per second.
 */
 
-QSGTargetedDirection::QSGTargetedDirection(QObject *parent) :
-    QSGStochasticDirection(parent)
+QSGTargetDirection::QSGTargetDirection(QObject *parent) :
+    QSGDirection(parent)
   , m_targetX(0)
   , m_targetY(0)
   , m_targetVariation(0)
@@ -94,7 +94,7 @@ QSGTargetedDirection::QSGTargetedDirection(QObject *parent) :
 {
 }
 
-const QPointF &QSGTargetedDirection::sample(const QPointF &from)
+const QPointF &QSGTargetDirection::sample(const QPointF &from)
 {
     //###This approach loses interpolating the last position of the target (like we could with the emitter) is it worthwhile?
     qreal targetX;
diff --git a/src/declarative/particles/qsgtargeteddirection_p.h b/src/declarative/particles/qsgtargetdirection_p.h
similarity index 97%
rename from src/declarative/particles/qsgtargeteddirection_p.h
rename to src/declarative/particles/qsgtargetdirection_p.h
index 6fdd3f937d..8f4901a57b 100644
--- a/src/declarative/particles/qsgtargeteddirection_p.h
+++ b/src/declarative/particles/qsgtargetdirection_p.h
@@ -41,7 +41,7 @@
 
 #ifndef DIRECTEDVECTOR_H
 #define DIRECTEDVECTOR_H
-#include "qsgstochasticdirection_p.h"
+#include "qsgdirection_p.h"
 QT_BEGIN_HEADER
 
 QT_BEGIN_NAMESPACE
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
 QT_MODULE(Declarative)
 
 class QSGItem;
-class QSGTargetedDirection : public QSGStochasticDirection
+class QSGTargetDirection : public QSGDirection
 {
     Q_OBJECT
     Q_PROPERTY(qreal targetX READ targetX WRITE setTargetX NOTIFY targetXChanged)
@@ -65,7 +65,7 @@ class QSGTargetedDirection : public QSGStochasticDirection
     Q_PROPERTY(qreal magnitudeVariation READ magnitudeVariation WRITE setMagnitudeVariation NOTIFY magnitudeVariationChanged)
 
 public:
-    explicit QSGTargetedDirection(QObject *parent = 0);
+    explicit QSGTargetDirection(QObject *parent = 0);
     virtual const QPointF &sample(const QPointF &from);
 
     qreal targetX() const
diff --git a/src/declarative/particles/qsgfollowemitter.cpp b/src/declarative/particles/qsgtrailemitter.cpp
similarity index 85%
rename from src/declarative/particles/qsgfollowemitter.cpp
rename to src/declarative/particles/qsgtrailemitter.cpp
index 68f0f6bf75..6bccf3ba8c 100644
--- a/src/declarative/particles/qsgfollowemitter.cpp
+++ b/src/declarative/particles/qsgtrailemitter.cpp
@@ -39,21 +39,20 @@
 **
 ****************************************************************************/
 
-#include "qsgfollowemitter_p.h"
-#include "qsgparticlepainter_p.h"//TODO: What was this for again?
+#include "qsgtrailemitter_p.h"
 #include <cmath>
 QT_BEGIN_NAMESPACE
 
 /*!
-    \qmlclass FollowEmitter QSGFollowEmitter
+    \qmlclass TrailEmitter QSGTrailEmitter
     \inqmlmodule QtQuick.Particles 2
     \inherits QSGParticleEmitter
-    \brief The FollowEmitter element allows you to emit logical particles from other logical particles.
+    \brief The TrailEmitter element allows you to emit logical particles from other logical particles.
 
     This element emits logical particles into the ParticleSystem, with the
     starting positions based on those of other logical particles.
 */
-QSGFollowEmitter::QSGFollowEmitter(QSGItem *parent) :
+QSGTrailEmitter::QSGTrailEmitter(QSGItem *parent) :
     QSGParticleEmitter(parent)
   , m_particlesPerParticlePerSecond(0)
   , m_lastTimeStamp(0)
@@ -73,28 +72,37 @@ QSGFollowEmitter::QSGFollowEmitter(QSGItem *parent) :
 }
 
 /*!
-    \qmlproperty string QtQuick.Particles2::FollowEmitter::follow
+    \qmlproperty string QtQuick.Particles2::TrailEmitter::follow
 
     The type of logical particle which this is emitting from.
 */
+/*!
+    \qmlproperty qreal QtQuick.Particles2::TrailEmitter::speedFromMovement
+
+    If this value is non-zero, then any movement of the emitter will provide additional
+    starting velocity to the particles based on the movement. The additional vector will be the
+    same angle as the emitter's movement, with a magnitude that is the magnitude of the emitters
+    movement multiplied by speedFromMovement.
 
+    Default value is 0.
+*/
 /*!
-    \qmlproperty Shape QtQuick.Particles2::FollowEmitter::emitShape
+    \qmlproperty Shape QtQuick.Particles2::TrailEmitter::emitShape
 
-    As the area of a FollowEmitter is the area it follows, a separate shape can be provided
+    As the area of a TrailEmitter is the area it follows, a separate shape can be provided
     to be the shape it emits out of.
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::FollowEmitter::emitWidth
+    \qmlproperty real QtQuick.Particles2::TrailEmitter::emitWidth
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::FollowEmitter::emitHeight
+    \qmlproperty real QtQuick.Particles2::TrailEmitter::emitHeight
 */
 /*!
-    \qmlproperty real QtQuick.Particles2::FollowEmitter::emitRatePerParticle
+    \qmlproperty real QtQuick.Particles2::TrailEmitter::emitRatePerParticle
 */
 /*!
-    \qmlsignal QtQuick.Particles2::FollowEmitter::emitFollowParticle(particle, followed)
+    \qmlsignal QtQuick.Particles2::TrailEmitter::emitFollowParticle(particle, followed)
 
     This handler is called when a particle is emitted. You can modify particle
     attributes from within the handler. followed is the particle that this is being
@@ -103,13 +111,13 @@ QSGFollowEmitter::QSGFollowEmitter(QSGItem *parent) :
     If you use this signal handler, emitParticle will not be emitted.
 */
 
-bool QSGFollowEmitter::isEmitFollowConnected()
+bool QSGTrailEmitter::isEmitFollowConnected()
 {
     static int idx = QObjectPrivate::get(this)->signalIndex("emitFollowParticle(QDeclarativeV8Handle,QDeclarativeV8Handle)");
     return QObjectPrivate::get(this)->isSignalConnected(idx);
 }
 
-void QSGFollowEmitter::recalcParticlesPerSecond(){
+void QSGTrailEmitter::recalcParticlesPerSecond(){
     if (!m_system)
         return;
     m_followCount = m_system->m_groupData[m_system->m_groupIds[m_follow]]->size();
@@ -122,16 +130,16 @@ void QSGFollowEmitter::recalcParticlesPerSecond(){
     }
 }
 
-void QSGFollowEmitter::reset()
+void QSGTrailEmitter::reset()
 {
     m_followCount = 0;
 }
 
-void QSGFollowEmitter::emitWindow(int timeStamp)
+void QSGTrailEmitter::emitWindow(int timeStamp)
 {
     if (m_system == 0)
         return;
-    if (!m_emitting && !m_burstLeft && m_burstQueue.isEmpty())
+    if (!m_enabled && !m_burstLeft && m_burstQueue.isEmpty())
         return;
     if (m_followCount != m_system->m_groupData[m_system->m_groupIds[m_follow]]->size()){
         qreal oldPPS = m_particlesPerSecond;
@@ -224,8 +232,8 @@ void QSGFollowEmitter::emitWindow(int timeStamp)
                 float size = qMax((qreal)0.0, m_particleSize + sizeVariation);
                 float endSize = qMax((qreal)0.0, sizeAtEnd + sizeVariation);
 
-                datum->size = size * float(m_emitting);
-                datum->endSize = endSize * float(m_emitting);
+                datum->size = size * float(m_enabled);
+                datum->endSize = endSize * float(m_enabled);
 
                 if (isEmitFollowConnected())
                     emitFollowParticle(datum->v8Value(), d->v8Value());//A chance for many arbitrary JS changes
diff --git a/src/declarative/particles/qsgfollowemitter_p.h b/src/declarative/particles/qsgtrailemitter_p.h
similarity index 93%
rename from src/declarative/particles/qsgfollowemitter_p.h
rename to src/declarative/particles/qsgtrailemitter_p.h
index d26435df6a..5ab6f24270 100644
--- a/src/declarative/particles/qsgfollowemitter_p.h
+++ b/src/declarative/particles/qsgtrailemitter_p.h
@@ -51,21 +51,20 @@ QT_BEGIN_NAMESPACE
 QT_MODULE(Declarative)
 
 
-class QSGFollowEmitter : public QSGParticleEmitter
+class QSGTrailEmitter : public QSGParticleEmitter
 {
     Q_OBJECT
     Q_PROPERTY(QString follow READ follow WRITE setFollow NOTIFY followChanged)
-    //### Remove, and just document that particles per second is per particle? But has count issues
     Q_PROPERTY(int emitRatePerParticle READ particlesPerParticlePerSecond WRITE setParticlesPerParticlePerSecond NOTIFY particlesPerParticlePerSecondChanged)
 
-    //TODO: Document that FollowEmitter's box is where it follows. It emits in a rect centered on the followed particle
+    //TODO: Document that TrailEmitter's box is where it follows. It emits in a rect centered on the followed particle
     //TODO: A set of properties that can involve the particle size of the followed
     Q_PROPERTY(QSGParticleExtruder* emitShape READ emissonShape WRITE setEmissionShape NOTIFY emissionShapeChanged)
     Q_PROPERTY(qreal emitHeight READ emitterYVariation WRITE setEmitterYVariation NOTIFY emitterYVariationChanged)
     Q_PROPERTY(qreal emitWidth READ emitterXVariation WRITE setEmitterXVariation NOTIFY emitterXVariationChanged)
 
 public:
-    explicit QSGFollowEmitter(QSGItem *parent = 0);
+    explicit QSGTrailEmitter(QSGItem *parent = 0);
     virtual void emitWindow(int timeStamp);
     virtual void reset();
 
diff --git a/src/declarative/particles/qsgturbulence.cpp b/src/declarative/particles/qsgturbulence.cpp
index 003f3c12b6..2caebc7c1f 100644
--- a/src/declarative/particles/qsgturbulence.cpp
+++ b/src/declarative/particles/qsgturbulence.cpp
@@ -138,7 +138,7 @@ void QSGTurbulenceAffector::mapUpdate()
 
 void QSGTurbulenceAffector::affectSystem(qreal dt)
 {
-    if (!m_system || !m_active)
+    if (!m_system || !m_enabled)
         return;
     ensureInit();
     qreal period = 1.0/m_frequency;
diff --git a/src/declarative/particles/qsgv8particledata.cpp b/src/declarative/particles/qsgv8particledata.cpp
index 72c0b7c2de..d45093c57e 100644
--- a/src/declarative/particles/qsgv8particledata.cpp
+++ b/src/declarative/particles/qsgv8particledata.cpp
@@ -128,7 +128,7 @@ static void particleData_set_ ## VARIABLE (v8::Local<v8::String>, v8::Local<v8::
     r->datum-> SETTER ( value->NumberValue() );\
 }
 
-#define FLOAT_REGISTER_ACCESSOR(FT, ENGINE, VARIABLE) FT ->PrototypeTemplate()->SetAccessor( v8::String::New( #VARIABLE ), particleData_get_ ## VARIABLE , particleData_set_ ## VARIABLE , v8::External::Wrap(ENGINE))
+#define FLOAT_REGISTER_ACCESSOR(FT, ENGINE, VARIABLE, NAME) FT ->PrototypeTemplate()->SetAccessor( v8::String::New( #NAME ), particleData_get_ ## VARIABLE , particleData_set_ ## VARIABLE , v8::External::Wrap(ENGINE))
 
 FLOAT_GETTER_AND_SETTER(x)
 FLOAT_GETTER_AND_SETTER(y)
@@ -169,34 +169,34 @@ QV8ParticleDataDeletable::QV8ParticleDataDeletable(QV8Engine *engine)
     ft->InstanceTemplate()->SetHasExternalResource(true);
     ft->PrototypeTemplate()->Set(v8::String::New("discard"), V8FUNCTION(particleData_discard, engine));
     ft->PrototypeTemplate()->Set(v8::String::New("lifeLeft"), V8FUNCTION(particleData_lifeLeft, engine));
-    ft->PrototypeTemplate()->Set(v8::String::New("curSize"), V8FUNCTION(particleData_curSize, engine));
-    FLOAT_REGISTER_ACCESSOR(ft, engine, x);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, y);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, t);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, lifeSpan);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, size);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, endSize);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, vx);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, vy);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, ax);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, ay);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, xx);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, xy);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, rotation);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, rotationSpeed);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, autoRotate);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, animIdx);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, frameDuration);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, frameCount);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, animT);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, r);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, update);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, curX);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, curVX);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, curAX);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, curY);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, curVY);
-    FLOAT_REGISTER_ACCESSOR(ft, engine, curAY);
+    ft->PrototypeTemplate()->Set(v8::String::New("currentSize"), V8FUNCTION(particleData_curSize, engine));
+    FLOAT_REGISTER_ACCESSOR(ft, engine, x, initialX);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, y, initialY);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, t, t);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, lifeSpan, lifeSpan);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, size, startSize);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, endSize, endSize);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, vx, initialVX);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, vy, initialVY);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, ax, initialAX);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, ay, initialAY);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, xx, xDeformationVector);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, xy, yDeformationVector);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, rotation, rotation);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, rotationSpeed, rotationSpeed);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, autoRotate, autoRotate);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, animIdx, animationIndex);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, frameDuration, frameDuration);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, frameCount, frameCount);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, animT, animationT);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, r, r);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, update, update);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, curX, x);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, curVX, vx);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, curAX, ax);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, curY, y);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, curVY, vy);
+    FLOAT_REGISTER_ACCESSOR(ft, engine, curAY, ay);
 
     constructor = qPersistentNew(ft->GetFunction());
 }
diff --git a/src/declarative/particles/qsgwander.cpp b/src/declarative/particles/qsgwander.cpp
index a4a4d2c9c5..d3e87fb241 100644
--- a/src/declarative/particles/qsgwander.cpp
+++ b/src/declarative/particles/qsgwander.cpp
@@ -49,10 +49,39 @@ QT_BEGIN_NAMESPACE
     \brief The Wander affector allows particles to randomly vary their trajectory.
 
 */
+/*!
+    \qmlproperty real QtQuick.Particles2::Wander::pace
+
+    Maximum attribute change per second.
+*/
+/*!
+    \qmlproperty real QtQuick.Particles2::Wander::xVariance
+
+    Maximum attribute x value (as a result of Wander).
+
+    If unset, Wander will not affect x values.
+*/
+/*!
+    \qmlproperty real QtQuick.Particles2::Wander::yVariance
+
+    Maximum attribute y value (as a result of Wander).
+
+    If unset, Wander will not affect y values.
+*/
+/*!
+    \qmlproperty AffectableParameter QtQuick.Particles2::Wander::affectedParameter
+
+    What attribute of particles is directly affected.
+    \list
+    \o PointAttractor.Position
+    \o PointAttractor.Velocity
+    \o PointAttractor.Acceleration
+    \endlist
+*/
 
 QSGWanderAffector::QSGWanderAffector(QSGItem *parent) :
     QSGParticleAffector(parent), m_xVariance(0), m_yVariance(0), m_pace(0)
-    , m_physics(Velocity)
+    , m_affectedParameter(Velocity)
 {
     m_needsReset = true;
 }
@@ -119,7 +148,7 @@ bool QSGWanderAffector::affectParticle(QSGParticleData* data, qreal dt)
     qreal dx = dt * m_pace * (2 * qreal(qrand())/RAND_MAX - 1);
     qreal dy = dt * m_pace * (2 * qreal(qrand())/RAND_MAX - 1);
     qreal newX, newY;
-    switch (m_physics){
+    switch (m_affectedParameter){
     case Position:
         newX = data->curX() + dx;
         if (m_xVariance > qAbs(newX) )
diff --git a/src/declarative/particles/qsgwander_p.h b/src/declarative/particles/qsgwander_p.h
index ae98cf3681..46ad6ea3a2 100644
--- a/src/declarative/particles/qsgwander_p.h
+++ b/src/declarative/particles/qsgwander_p.h
@@ -66,11 +66,11 @@ class QSGWanderAffector : public QSGParticleAffector
     Q_PROPERTY(qreal pace READ pace WRITE setPace NOTIFY paceChanged)
     Q_PROPERTY(qreal xVariance READ xVariance WRITE setXVariance NOTIFY xVarianceChanged)
     Q_PROPERTY(qreal yVariance READ yVariance WRITE setYVariance NOTIFY yVarianceChanged)
-    Q_PROPERTY(PhysicsAffects physics READ physics WRITE setPhysics NOTIFY physicsChanged)
-    Q_ENUMS(PhysicsAffects)
+    Q_PROPERTY(AffectableParameters affectedParameter READ affectedParameter WRITE setAffectedParameter NOTIFY affectedParameterChanged)
+    Q_ENUMS(AffectableParameters)
 
 public:
-    enum PhysicsAffects {
+    enum AffectableParameters {
         Position,
         Velocity,
         Acceleration
@@ -95,9 +95,9 @@ public:
         return m_pace;
     }
 
-    PhysicsAffects physics() const
+    AffectableParameters affectedParameter() const
     {
-        return m_physics;
+        return m_affectedParameter;
     }
 
 protected:
@@ -111,7 +111,7 @@ signals:
     void paceChanged(qreal arg);
 
 
-    void physicsChanged(PhysicsAffects arg);
+    void affectedParameterChanged(AffectableParameters arg);
 
 public slots:
 void setXVariance(qreal arg)
@@ -139,11 +139,11 @@ void setPace(qreal arg)
 }
 
 
-void setPhysics(PhysicsAffects arg)
+void setAffectedParameter(AffectableParameters arg)
 {
-    if (m_physics != arg) {
-        m_physics = arg;
-        emit physicsChanged(arg);
+    if (m_affectedParameter != arg) {
+        m_affectedParameter = arg;
+        emit affectedParameterChanged(arg);
     }
 }
 
@@ -153,7 +153,7 @@ private:
     qreal m_xVariance;
     qreal m_yVariance;
     qreal m_pace;
-    PhysicsAffects m_physics;
+    AffectableParameters m_affectedParameter;
 };
 
 QT_END_NAMESPACE
-- 
GitLab