diff --git a/Gui/Resources/icons/Assembly_SmartRecompute.svg b/Gui/Resources/icons/Assembly_SmartRecompute.svg
new file mode 100644
index 0000000..66cbfc1
--- /dev/null
+++ b/Gui/Resources/icons/Assembly_SmartRecompute.svg
@@ -0,0 +1,1119 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg2980"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="Assembly_SmartRecompute.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <defs
+     id="defs2982">
+    <linearGradient
+       id="linearGradient3864">
+      <stop
+         id="stop3866"
+         offset="0"
+         style="stop-color:#71b2f8;stop-opacity:1;" />
+      <stop
+         id="stop3868"
+         offset="1"
+         style="stop-color:#002795;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3864"
+       id="radialGradient3850"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6028459,1.0471639,-1.9794021,1.1395295,127.9588,-74.456907)"
+       cx="51.328892"
+       cy="31.074146"
+       fx="51.328892"
+       fy="31.074146"
+       r="19.571428" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 32 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="64 : 32 : 1"
+       inkscape:persp3d-origin="32 : 21.333333 : 1"
+       id="perspective2988" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-6"
+       id="radialGradient3699"
+       gradientUnits="userSpaceOnUse"
+       cx="76.383331"
+       cy="94.369568"
+       fx="76.383331"
+       fy="94.369568"
+       r="19.467436"
+       gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" />
+    <linearGradient
+       id="linearGradient3377">
+      <stop
+         id="stop3379"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377"
+       id="radialGradient3701"
+       gradientUnits="userSpaceOnUse"
+       cx="84.883324"
+       cy="77.042847"
+       fx="84.883324"
+       fy="77.042847"
+       r="19.467436"
+       gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)" />
+    <linearGradient
+       id="linearGradient3007">
+      <stop
+         id="stop3009"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3011"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="77.042847"
+       fx="84.883324"
+       cy="77.042847"
+       cx="84.883324"
+       gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3017"
+       xlink:href="#linearGradient3377-6"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-6"
+       id="radialGradient3699-2"
+       gradientUnits="userSpaceOnUse"
+       cx="76.383331"
+       cy="94.369568"
+       fx="76.383331"
+       fy="94.369568"
+       r="19.467436"
+       gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" />
+    <linearGradient
+       id="linearGradient3377-6">
+      <stop
+         id="stop3379-2"
+         offset="0"
+         style="stop-color:#00afff;stop-opacity:1;" />
+      <stop
+         id="stop3381-4"
+         offset="1"
+         style="stop-color:#0034ff;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="77.042847"
+       fx="84.883324"
+       cy="77.042847"
+       cx="84.883324"
+       gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3017-8"
+       xlink:href="#linearGradient3377-6"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3835">
+      <stop
+         id="stop3837"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3839"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="77.042847"
+       fx="84.883324"
+       cy="77.042847"
+       cx="84.883324"
+       gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3844"
+       xlink:href="#linearGradient3377-6"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-6"
+       id="radialGradient3699-7"
+       gradientUnits="userSpaceOnUse"
+       cx="76.383331"
+       cy="94.369568"
+       fx="76.383331"
+       fy="94.369568"
+       r="19.467436"
+       gradientTransform="matrix(0.9818943,0.1894295,-0.4109427,2.1300924,40.163453,-121.11559)" />
+    <linearGradient
+       id="linearGradient3377-2">
+      <stop
+         id="stop3379-7"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381-8"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="77.042847"
+       fx="84.883324"
+       cy="77.042847"
+       cx="84.883324"
+       gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3017-6"
+       xlink:href="#linearGradient3377-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3835-1">
+      <stop
+         id="stop3837-0"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3839-9"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="77.042847"
+       fx="84.883324"
+       cy="77.042847"
+       cx="84.883324"
+       gradientTransform="matrix(2.8492421,1.2585119,-0.4040415,0.9147407,-125.84131,-100.25805)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3844-7"
+       xlink:href="#linearGradient3377-6"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4032"
+       id="radialGradient4112"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,156.5648,24.076707)"
+       cx="86.836884"
+       cy="90.601151"
+       fx="86.836884"
+       fy="90.601151"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient4032">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop4034" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop4036" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4032"
+       id="radialGradient4114"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
+       cx="113.50187"
+       cy="65.849281"
+       fx="113.50187"
+       fy="65.849281"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient3171">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop3173" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop3175" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="65.849281"
+       fx="113.50187"
+       cy="65.849281"
+       cx="113.50187"
+       gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3180"
+       xlink:href="#linearGradient4032"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4032-7"
+       id="radialGradient4112-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,162.99236,26.56694)"
+       cx="86.836884"
+       cy="90.601151"
+       fx="86.836884"
+       fy="90.601151"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient4032-7">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop4034-3" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop4036-6" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4032-7"
+       id="radialGradient4114-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
+       cx="113.50187"
+       cy="65.849281"
+       fx="113.50187"
+       fy="65.849281"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient3171-9">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop3173-7" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop3175-5" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="65.849281"
+       fx="113.50187"
+       cy="65.849281"
+       cx="113.50187"
+       gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3180-6"
+       xlink:href="#linearGradient4032-7"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4032-8"
+       id="radialGradient4112-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.19157613,0.46621455,-1.1364164,-0.41904304,156.5648,24.076707)"
+       cx="86.836884"
+       cy="90.601151"
+       fx="86.836884"
+       fy="90.601151"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient4032-8">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop4034-4" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop4036-3" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4032-8"
+       id="radialGradient4114-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
+       cx="113.50187"
+       cy="65.849281"
+       fx="113.50187"
+       fy="65.849281"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient3171-1">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop3173-0" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop3175-3" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="65.849281"
+       fx="113.50187"
+       cy="65.849281"
+       cx="113.50187"
+       gradientTransform="matrix(0.19036833,-0.61386357,1.99853,-0.19092801,-47.133199,165.45559)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3180-9"
+       xlink:href="#linearGradient4032-8"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9"
+       id="linearGradient3822"
+       x1="154.13527"
+       y1="33.267025"
+       x2="165.61629"
+       y2="46.429642"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient4032-0">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop4034-37" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop4036-1" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4032-0"
+       id="radialGradient3703"
+       gradientUnits="userSpaceOnUse"
+       cx="132.70454"
+       cy="90.193245"
+       fx="132.70454"
+       fy="90.193245"
+       r="19.467436"
+       gradientTransform="matrix(-0.08162339,1.3949072,-1.1572569,-0.26963374,245.22773,-105.44363)" />
+    <linearGradient
+       id="linearGradient3284">
+      <stop
+         style="stop-color:#71b2f8;stop-opacity:1;"
+         offset="0"
+         id="stop3286" />
+      <stop
+         style="stop-color:#002795;stop-opacity:1;"
+         offset="1"
+         id="stop3288" />
+    </linearGradient>
+    <radialGradient
+       r="19.467436"
+       fy="90.193245"
+       fx="132.70454"
+       cy="90.193245"
+       cx="132.70454"
+       gradientTransform="matrix(-0.08162339,1.3949072,-1.1572569,-0.26963374,245.22773,-105.44363)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3294"
+       xlink:href="#linearGradient3377-9"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9"
+       id="radialGradient4112-90"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.30609499,0.61332806,-1.343059,-0.58110363,169.81431,115.03622)"
+       cx="86.836884"
+       cy="90.601151"
+       fx="86.836884"
+       fy="90.601151"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient3377-9">
+      <stop
+         id="stop3379-3"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381-7"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9"
+       id="linearGradient4568"
+       x1="113.20887"
+       y1="84.950653"
+       x2="55.225117"
+       y2="83.622498"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient3377-9-9">
+      <stop
+         id="stop3379-3-2"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381-7-3"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="83.622498"
+       x2="55.225117"
+       y1="84.950653"
+       x1="113.20887"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3091"
+       xlink:href="#linearGradient3377-9-9"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-8"
+       id="radialGradient4112-90-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.30609499,0.61332806,-1.343059,-0.58110363,169.81431,115.03622)"
+       cx="86.836884"
+       cy="90.601151"
+       fx="86.836884"
+       fy="90.601151"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient3377-9-8">
+      <stop
+         id="stop3379-3-8"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381-7-2"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-7"
+       id="linearGradient4568-2"
+       x1="113.20887"
+       y1="84.950653"
+       x2="55.225117"
+       y2="83.622498"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient3377-9-9-7">
+      <stop
+         id="stop3379-3-2-0"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381-7-3-7"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="83.622498"
+       x2="55.225117"
+       y1="84.950653"
+       x1="113.20887"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3091-0"
+       xlink:href="#linearGradient3377-9-9-7"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-2"
+       id="radialGradient4112-90-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.30609499,0.61332806,-1.343059,-0.58110363,169.81431,115.03622)"
+       cx="86.836884"
+       cy="90.601151"
+       fx="86.836884"
+       fy="90.601151"
+       r="19.467436" />
+    <linearGradient
+       id="linearGradient3377-9-2">
+      <stop
+         id="stop3379-3-21"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381-7-22"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-1"
+       id="linearGradient4568-6"
+       x1="113.20887"
+       y1="84.950653"
+       x2="55.225117"
+       y2="83.622498"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient3377-9-9-1">
+      <stop
+         id="stop3379-3-2-6"
+         offset="0"
+         style="stop-color:#faff2b;stop-opacity:1;" />
+      <stop
+         id="stop3381-7-3-3"
+         offset="1"
+         style="stop-color:#ffaa00;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="83.622498"
+       x2="55.225117"
+       y1="84.950653"
+       x1="113.20887"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3091-4"
+       xlink:href="#linearGradient3377-9-9-1"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4023"
+       id="linearGradient4029"
+       x1="45"
+       y1="34"
+       x2="50"
+       y2="59"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4023">
+      <stop
+         style="stop-color:#8ae234;stop-opacity:1;"
+         offset="0"
+         id="stop4025" />
+      <stop
+         style="stop-color:#4e9a06;stop-opacity:1"
+         offset="1"
+         id="stop4027" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3801-6"
+       id="linearGradient3807-3"
+       x1="110"
+       y1="35"
+       x2="85"
+       y2="35"
+       gradientUnits="userSpaceOnUse"
+       spreadMethod="reflect"
+       gradientTransform="matrix(0.45833337,0,0,0.51724135,-28.625003,1.4482735)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3801-6">
+      <stop
+         style="stop-color:#204a87;stop-opacity:1"
+         offset="0"
+         id="stop3803-7" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="1"
+         id="stop3805-5" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2682">
+      <stop
+         id="stop2684"
+         offset="0"
+         style="stop-color:#4e9a06;stop-opacity:1" />
+      <stop
+         id="stop2686"
+         offset="1"
+         style="stop-color:#89aedc;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2402">
+      <stop
+         id="stop2404"
+         offset="0"
+         style="stop-color:#729fcf;stop-opacity:1;" />
+      <stop
+         id="stop2406"
+         offset="1"
+         style="stop-color:#528ac5;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2871"
+       inkscape:collect="always">
+      <stop
+         id="stop2873"
+         offset="0"
+         style="stop-color:#3465a4;stop-opacity:1;" />
+      <stop
+         id="stop2875"
+         offset="1"
+         style="stop-color:#3465a4;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3945">
+      <stop
+         style="stop-color:#8ae234;stop-opacity:1"
+         offset="0"
+         id="stop3947" />
+      <stop
+         style="stop-color:#73d216;stop-opacity:1"
+         offset="1"
+         id="stop3949" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2380">
+      <stop
+         id="stop2382"
+         offset="0"
+         style="stop-color:#b9cfe7;stop-opacity:1" />
+      <stop
+         id="stop2384"
+         offset="1"
+         style="stop-color:#729fcf;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2831-2"
+       id="linearGradient1486-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.370336,0,0,1.3589114,0.02150968,-18.214919)"
+       x1="13.478554"
+       y1="10.612206"
+       x2="15.419417"
+       y2="19.115122" />
+    <linearGradient
+       id="linearGradient2831-2">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop2833-3" />
+      <stop
+         id="stop2855-1"
+         offset="0.33333334"
+         style="stop-color:#5b86be;stop-opacity:1;" />
+      <stop
+         style="stop-color:#83a8d8;stop-opacity:0;"
+         offset="1"
+         id="stop2835-6" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2871"
+       id="linearGradient1488-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.370336,0,0,-1.3589114,64.512944,44.464873)"
+       x1="37.128052"
+       y1="29.729605"
+       x2="37.065414"
+       y2="26.194071" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3063-2"
+       id="linearGradient3858-1"
+       gradientUnits="userSpaceOnUse"
+       x1="42.703487"
+       y1="20.547306"
+       x2="26.605606"
+       y2="33.634254" />
+    <linearGradient
+       id="linearGradient3063-2">
+      <stop
+         id="stop3065-6"
+         offset="0"
+         style="stop-color:#729fcf;stop-opacity:1" />
+      <stop
+         id="stop3067-0"
+         offset="1"
+         style="stop-color:#204a87;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2380-9"
+       id="linearGradient3034-4"
+       gradientUnits="userSpaceOnUse"
+       x1="26.221533"
+       y1="31.125586"
+       x2="46.731483"
+       y2="21.766298" />
+    <linearGradient
+       id="linearGradient2380-9">
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="0"
+         id="stop2382-4" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1"
+         offset="1"
+         id="stop2384-6" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2871"
+       id="linearGradient1488"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.370336,0,0,-1.3589114,64.512944,44.464873)"
+       x1="37.128052"
+       y1="29.729605"
+       x2="37.065414"
+       y2="26.194071" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2380-9"
+       id="linearGradient3034"
+       gradientUnits="userSpaceOnUse"
+       x1="41.791897"
+       y1="20.134634"
+       x2="23.705669"
+       y2="34.083359" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8662"
+       id="radialGradient1503"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0414388,0,0,0.73027218,-167.54261,-130.39501)"
+       cx="24.837126"
+       cy="36.421127"
+       fx="24.837126"
+       fy="36.421127"
+       r="15.644737" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient8662">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop8664" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop8666" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2831-2"
+       id="linearGradient4585"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.370336,0,0,1.3589114,0.02150968,-18.214919)"
+       x1="13.478554"
+       y1="10.612206"
+       x2="15.419417"
+       y2="19.115122" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3063-2"
+       id="linearGradient4587"
+       gradientUnits="userSpaceOnUse"
+       x1="42.703487"
+       y1="20.547306"
+       x2="26.605606"
+       y2="33.634254" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-1"
+       id="radialGradient4383"
+       cx="129.95859"
+       cy="112.15061"
+       fx="129.95859"
+       fy="112.15061"
+       r="59.459999"
+       gradientTransform="matrix(1.0619271,0.87484094,-0.7116457,0.87743359,69.12087,-102.68143)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-1"
+       id="radialGradient4393"
+       cx="22.848982"
+       cy="109.67272"
+       fx="22.848982"
+       fy="109.67272"
+       r="28.117317"
+       gradientTransform="matrix(1.1140321,0.01182134,-0.00390978,0.37425601,-2.1767207,72.25418)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-1"
+       id="radialGradient4403"
+       cx="45.323826"
+       cy="43.942806"
+       fx="45.323826"
+       fy="43.942806"
+       r="24.864599"
+       gradientTransform="matrix(1.250924,0.85979819,-0.2645376,0.39093685,4.6493662,-15.962789)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-1"
+       id="linearGradient4411"
+       x1="138.69154"
+       y1="20.081022"
+       x2="154.29837"
+       y2="25.508753"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-1"
+       id="linearGradient4421"
+       x1="222.00125"
+       y1="42.013535"
+       x2="237.44318"
+       y2="63.22588"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3377-9-9-1"
+       id="radialGradient4429"
+       cx="242.11412"
+       cy="114.51905"
+       fx="242.11412"
+       fy="114.51905"
+       r="28.120558"
+       gradientTransform="matrix(1,0,0,0.48394079,0,60.476218)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8662"
+       id="radialGradient4443"
+       cx="143.30699"
+       cy="259.802"
+       fx="143.30699"
+       fy="259.802"
+       r="20.253759"
+       gradientTransform="matrix(1.2547839,0.01300674,-0.00402626,0.39453529,-35.466293,155.43697)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.1601562"
+     inkscape:cx="72.511732"
+     inkscape:cy="53.195007"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1375"
+     inkscape:window-height="876"
+     inkscape:window-x="65"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true"
+     inkscape:snap-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3268"
+       empspacing="2"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2985">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>[jmaustpc]</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title>Assembly_Assembly_Create_New</dc:title>
+        <dc:date>2013-12-24</dc:date>
+        <dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>FreeCAD</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier>FreeCAD/src/Mod/Assembly/Gui/Resources/icons/Assembly_Assembly_Create_New.svg</dc:identifier>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>FreeCAD LGPL2+</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>[agryson] Alexander Gryson</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4589"
+       transform="matrix(0.50541932,0,0,0.49939308,-9.1317625,6.445082)">
+      <ellipse
+         inkscape:r_cy="true"
+         inkscape:r_cx="true"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.38333333;fill:url(#radialGradient1503);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none"
+         id="path8660"
+         transform="scale(-1,-1)"
+         cx="-116.83913"
+         cy="-103.79766"
+         rx="31.937773"
+         ry="11.424921" />
+      <g
+         id="g3863"
+         transform="translate(84,68)">
+        <path
+           style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient4585);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1488);stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+           d="m 27,-3.6915582 c 0,0 -12.247378,-0.8493196 -8.478954,13.4192502 l -10.534458,0 c 0,0 0.685168,-16.137073 19.013412,-13.4192502 z"
+           id="path2865-9"
+           inkscape:r_cx="true"
+           inkscape:r_cy="true"
+           sodipodi:nodetypes="cccc"
+           inkscape:connector-curvature="0" />
+        <g
+           id="g1878-1"
+           transform="matrix(-0.79349441,-0.66481753,-0.67040672,0.78687903,77.66003,0.94046451)"
+           inkscape:r_cx="true"
+           inkscape:r_cy="true"
+           style="fill:url(#linearGradient4587);fill-opacity:1;stroke:#204a87;stroke-width:0.73280919;stroke-opacity:1">
+          <path
+             sodipodi:nodetypes="ccccccc"
+             id="path1880-27"
+             d="M 44.306783,50.229694 C 62.821497,35.818859 49.664587,13.411704 22.462411,12.49765 L 22.113843,3.1515478 7.6245439,20.496754 22.714328,33.219189 c 0,0 -0.251917,-9.88122 -0.251917,-9.88122 18.82976,0.998977 32.981627,14.071729 21.844372,26.891725 z"
+             style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient3034);fill-opacity:1;fill-rule:nonzero;stroke:#0b1521;stroke-width:3.26039815;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+             inkscape:r_cx="true"
+             inkscape:r_cy="true"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           style="fill:none;stroke:#729fcf;stroke-width:0.73280919;stroke-opacity:1"
+           inkscape:r_cy="true"
+           inkscape:r_cx="true"
+           transform="matrix(-0.69686517,-0.58385766,-0.58876622,0.69105539,72.350404,1.0127423)"
+           id="g2805-0">
+          <path
+             inkscape:r_cy="true"
+             inkscape:r_cx="true"
+             style="color:#000000;display:block;overflow:visible;visibility:visible;fill:none;stroke:#729fcf;stroke-width:2.20148993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:21;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+             d="M 52.368857,42.344789 C 57.336994,33.465615 49.176003,12.601866 19.05552,12.672851 L 18.677956,5.6633463 7.4378077,19.282655 19.129354,29.167094 18.807724,20.554957 c 18.244937,0.381972 33.804002,9.457851 33.561133,21.789832 z"
+             id="path2807-9"
+             sodipodi:nodetypes="ccccccc"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+      <g
+         id="g3863-0"
+         transform="matrix(-1,0,0,-1,149.98659,97)">
+        <path
+           style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient1486-5);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1488-8);stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+           d="m 27,-3.6915582 c 0,0 -12.247378,-0.8493196 -8.478954,13.4192502 l -10.534458,0 c 0,0 0.685168,-16.137073 19.013412,-13.4192502 z"
+           id="path2865-3"
+           inkscape:r_cx="true"
+           inkscape:r_cy="true"
+           sodipodi:nodetypes="cccc"
+           inkscape:connector-curvature="0" />
+        <g
+           id="g1878-6"
+           transform="matrix(-0.79349441,-0.66481753,-0.67040672,0.78687903,77.66003,0.94046451)"
+           inkscape:r_cx="true"
+           inkscape:r_cy="true"
+           style="fill:url(#linearGradient3858-1);fill-opacity:1;stroke:#204a87;stroke-width:0.73280919;stroke-opacity:1">
+          <path
+             sodipodi:nodetypes="ccccccc"
+             id="path1880-2"
+             d="M 44.306783,50.229694 C 62.821497,35.818859 49.664587,13.411704 22.462411,12.49765 L 22.113843,3.1515478 7.6245439,20.496754 22.714328,33.219189 c 0,0 -0.251917,-9.88122 -0.251917,-9.88122 18.82976,0.998977 32.981627,14.071729 21.844372,26.891725 z"
+             style="color:#000000;display:block;overflow:visible;visibility:visible;fill:url(#linearGradient3034-4);fill-opacity:1;fill-rule:nonzero;stroke:#0b1521;stroke-width:3.26039815;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+             inkscape:r_cx="true"
+             inkscape:r_cy="true"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           style="fill:none;stroke:#729fcf;stroke-width:0.73280919;stroke-opacity:1"
+           inkscape:r_cy="true"
+           inkscape:r_cx="true"
+           transform="matrix(-0.69686517,-0.58385766,-0.58876622,0.69105539,72.350404,1.0127423)"
+           id="g2805-4">
+          <path
+             inkscape:r_cy="true"
+             inkscape:r_cx="true"
+             style="color:#000000;display:block;overflow:visible;visibility:visible;fill:none;stroke:#729fcf;stroke-width:2.20148993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:21;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+             d="M 52.368857,42.344789 C 57.864671,33.591679 49.176003,12.601866 19.05552,12.672851 L 18.677956,5.6633463 7.4378077,19.282655 19.129354,29.167094 18.807724,20.554957 c 18.244937,0.381972 33.804002,9.457851 33.561133,21.789832 z"
+             id="path2807-5"
+             sodipodi:nodetypes="ccccccc"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+    </g>
+    <g
+       id="g3760-8"
+       transform="matrix(0.39800085,0,0,0.49338099,18.710208,-4.5784768)" />
+    <g
+       transform="matrix(0.19152769,-0.00201655,0.00200085,0.19003743,-0.60344927,1.4635324)"
+       id="g3"
+       style="stroke:none;stroke-opacity:1">
+      <path
+         style="fill:#ac6d00;fill-opacity:1;stroke:none;stroke-opacity:1"
+         d="m 143.25,55.486 c -41.06,0 -74.465,33.405 -74.465,74.465 0,16.824 5.511,32.711 15.938,45.939 1.998,2.536 4.15,5.033 6.23,7.448 6.212,7.208 12.078,14.017 14.166,21.675 0.045,0.165 0.438,1.773 0.38,7.247 l -0.01,0.791 c -0.063,4.444 -0.147,10.528 4.352,15.091 3.081,3.125 7.399,4.645 13.204,4.645 l 40.272,0 c 6.268,0 10.774,-1.534 13.776,-4.689 4.061,-4.267 3.789,-9.779 3.608,-13.427 -0.032,-0.645 -0.066,-1.296 -0.074,-1.944 -0.065,-5.48 0.345,-7.025 0.362,-7.09 2.121,-7.657 8.993,-15.732 15.057,-22.855 2.023,-2.377 3.934,-4.622 5.714,-6.879 10.431,-13.23 15.944,-29.12 15.944,-45.951 0.001,-41.06 -33.399,-74.466 -74.454,-74.466 z"
+         id="path4345"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:url(#radialGradient4383);fill-opacity:1;stroke:none;stroke-opacity:1"
+         d="m 189.982,166.614 c -1.607,2.036 -3.429,4.178 -5.358,6.445 -7.07,8.307 -15.084,17.722 -18.089,28.572 -0.429,1.546 -0.988,4.395 -0.905,11.273 0.01,0.835 0.049,1.675 0.091,2.507 0.032,0.657 0.075,1.523 0.071,2.209 -0.528,0.086 -1.325,0.166 -2.475,0.166 l -40.272,0 c -1.276,0 -2.022,-0.135 -2.405,-0.237 -0.198,-0.977 -0.17,-3.007 -0.152,-4.287 l 0.012,-0.844 c 0.072,-6.919 -0.483,-9.789 -0.907,-11.348 -2.98,-10.936 -10.575,-19.749 -17.275,-27.524 -2.066,-2.398 -4.019,-4.664 -5.813,-6.942 -8.32,-10.557 -12.718,-23.232 -12.718,-36.654 0,-32.789 26.676,-59.465 59.465,-59.465 32.783,0 59.455,26.676 59.455,59.465 -0.002,13.429 -4.401,26.108 -12.725,36.664 z"
+         id="path5"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#5b5959;fill-opacity:1;stroke:none;stroke-opacity:1"
+         d="m 161.766,239.564 -37.041,0 c -7.995,0 -14.5,6.505 -14.5,14.5 l 0,11.117 c 0,7.995 6.505,14.5 14.5,14.5 l 37.041,0 c 7.995,0 14.5,-6.505 14.5,-14.5 l 0,-11.117 c 0,-7.995 -6.505,-14.5 -14.5,-14.5 z"
+         id="path4433" />
+      <path
+         style="fill:url(#radialGradient4443);fill-opacity:1;stroke:none;stroke-opacity:1;opacity:0.758"
+         d="m 123.22461,254.56445 c 0.55843,5.48064 -2.76597,14.84409 6,12.11719 11.347,0 22.69401,0 34.04101,0 -1.3829,-4.65615 3.47493,-15.55305 -4,-14.11719 -12.01367,0 -24.02734,0 -36.04101,0 l 0,1 0,1 z"
+         id="path7"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:url(#linearGradient4411);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 142.80859,-1.9902344 c -6.70066,0.096425 -10.44207,7.4630245 -9.06445,13.4902344 0.64107,9.971359 -1.1383,20.252456 0.59375,30.091797 2.4143,7.712791 14.41447,8.238512 17.49023,0.763672 2.51116,-8.005025 0.0496,-16.819665 0.91602,-25.076172 0.0972,-6.095366 1.63458,-15.2331902 -5.42383,-18.3613282 -1.39837,-0.669597 -2.96355,-0.9799344 -4.51172,-0.9082032 z"
+         id="path9"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:url(#linearGradient4421);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 236.20898,30.28125 c -7.98029,0.673879 -11.81771,9.525162 -17.85206,13.667619 -4.45654,5.923394 -14.48955,9.683724 -14.10692,18.295272 0.20115,7.702099 10.73961,11.72848 16.0293,6.134765 7.9295,-8.219307 17.22778,-15.283922 24.53906,-24.029297 3.65508,-6.107121 -1.50408,-14.545855 -8.60938,-14.068359 z"
+         id="path11"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:url(#radialGradient4429);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 234.94531,107.64648 c -7.94238,-0.41137 -12.66288,10.36968 -6.97656,15.92774 5.73241,5.81509 14.93709,1.91631 22.00975,3.04828 7.09567,-1.02452 17.26161,2.93838 22.20705,-4.26508 4.61636,-6.2548 -1.27863,-15.85783 -8.92774,-14.75621 -9.4375,0.0151 -18.875,0.0302 -28.3125,0.0453 z"
+         id="path13"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:url(#radialGradient4403);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 45.929688,28.28125 c -7.919358,-0.206018 -12.380235,10.625648 -6.609376,16.054688 8.635557,7.662348 16.269453,16.62843 25.390626,23.671874 6.878173,3.891073 15.901303,-3.51073 13.410156,-11.017578 C 75.315771,49.717566 67.218914,46.102819 62.497433,40.206029 57.176555,36.477393 53.299765,28.138297 45.929688,28.28125 Z"
+         id="path15"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:url(#radialGradient4393);fill-opacity:1;stroke:#c0822e;stroke-width:7.86197805;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 14.970703,107.60938 c -7.95933,-0.0587 -12.1939741,10.93431 -6.2558592,16.23242 6.1295182,5.5103 15.3683282,1.55983 22.6757612,2.7834 6.851068,-0.79342 16.985568,2.80592 21.464864,-4.57832 4.209371,-6.2876 -1.665879,-15.44327 -9.123046,-14.40199 -9.587171,-0.007 -19.174764,-0.0469 -28.76172,-0.0355 z"
+         id="path17"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/assembly.py b/assembly.py
index d6850b0..e709c16 100644
--- a/assembly.py
+++ b/assembly.py
@@ -293,8 +293,31 @@ class ViewProviderAsmPartGroup(ViewProviderAsmGroup):
         vobj.DefaultMode = mode
 
 
+class AsmVersion(object):
+    def __init__(self,v=None):
+        self.value = 0
+        self.childVersion = v
+        self._childVersion = v
+        self.updated = False
+
+    def update(self,v):
+        self.updated = False
+        if self.childVersion!=v:
+            self._childVersion = v
+            self.updated = True
+            return True
+        return not gui.AsmCmdManager.SmartRecompute
+
+    def commit(self):
+        if self.updated:
+            self.childVersion = self._childVersion
+            self.value += 1
+            self.updated = False
+
+
 class AsmElement(AsmBase):
     def __init__(self,parent):
+        self.version = None
         self._initializing = True
         self.parent = getProxy(parent,AsmElementGroup)
         super(AsmElement,self).__init__()
@@ -318,6 +341,8 @@ class AsmElement(AsmBase):
         obj.setPropertyStatus('LinkedObject','ReadOnly')
         obj.configLinkProperty('LinkedObject','Placement','LinkTransform')
 
+        self.version = AsmVersion()
+
     def migrate(self):
         # To avoid over dependency, we no longer link to PartGroup, but to the
         # child part object directly
@@ -404,7 +429,8 @@ class AsmElement(AsmBase):
             shape.ElementMap = info.Shape.ElementMap
             obj.Shape = shape
 
-        self.updatePlacement(info)
+        # unfortunately, we can't easily check two shapes are the same
+        self.version.value += 1
         return False
 
     def updatePlacement(self,info=None):
@@ -994,6 +1020,7 @@ def getElementInfo(parent,subname,
 class AsmElementLink(AsmBase):
     def __init__(self,parent):
         super(AsmElementLink,self).__init__()
+        self.version = None
         self.info = None
         self.infos = []
         self.part = None
@@ -1021,6 +1048,19 @@ class AsmElementLink(AsmBase):
         self.part = None
         self.multiply = False
 
+        self.version = AsmVersion()
+
+    def childVersion(self,linked,mat):
+        if not isTypeOf(linked,AsmElement):
+            return None
+        obj = self.Object
+        return (getattr(obj,'Count',0),
+                linked,
+                linked.Proxy.version.value,
+                obj.Offset,
+                mat,
+                getattr(obj,'PlacementList',None))
+
     def attach(self,obj):
         obj.addProperty("App::PropertyXLink","LinkedObject"," Link",'')
         super(AsmElementLink,self).attach(obj)
@@ -1032,16 +1072,33 @@ class AsmElementLink(AsmBase):
         return True
 
     def execute(self,obj):
-        info = self.getInfo(True)
-        linked = obj.getLinkedObject(False)
+        link = obj.LinkedObject
+        if not isinstance(link,tuple):
+            raise RuntimeError('broken link')
+        linked,mat = link[0].getSubObject(link[1],1,FreeCAD.Matrix())
         if linked and linked.Label != linked.Name:
             obj.Label = linked.Label
+
+        info = None
+        if getattr(obj,'Count',None):
+            info = self.getInfo(True)
+
+        version = self.childVersion(linked,mat)
+        if not self.version.update(version):
+            logger.debug('skip {}, {}, {}'.format(
+                objName(obj),self.version.childVersion,version))
+            return
+        logger.debug('not skip {}, {}'.format(objName(obj),version))
+
+        if not info:
+            info = self.getInfo(True)
         relationGroup = self.getAssembly().getRelationGroup()
         if relationGroup and (not self.part or self.part!=info.Part):
             oldPart = self.part
             self.part = info.Part
             relationGroup.Proxy.update(
                     self.parent.Object,oldPart,info.Part,info.PartName)
+        self.version.commit()
         return False
 
     _MyIgnoredProperties = _IgnoredProperties | \
@@ -1066,12 +1123,14 @@ class AsmElementLink(AsmBase):
             self.getInfo(True)
             return
         if prop == 'Label':
-            linked = obj.getLinkedObject(False)
-            if linked and linked.Label != obj.Label:
-                linked.Label = obj.Label
-                # in case there is label duplication, AsmElement will auto
-                # re-lable it.
-                obj.Label = linked.Label
+            link = obj.LinkedObject
+            if isinstance(link,tuple):
+                linked = link[0].getSubObject(link[1],1)
+                if linked and linked.Label != obj.Label:
+                    linked.Label = obj.Label
+                    # in case there is label duplication, AsmElement will auto
+                    # re-lable it.
+                    obj.Label = linked.Label
             return
         if prop not in self._MyIgnoredProperties and \
            not Constraint.isDisabled(self.parent.Object):
@@ -1092,9 +1151,11 @@ class AsmElementLink(AsmBase):
         #  subname reference relative to the parent assembly's part group
 
         link = self.Object.LinkedObject
+        if not isinstance(link,tuple):
+            raise RuntimeError('broken link')
         linked = link[0].getSubObject(link[1],1)
         if not linked:
-            raise RuntimeError('Element link broken')
+            raise RuntimeError('broken link')
         element = getProxy(linked,AsmElement)
         assembly = element.getAssembly()
         if assembly == self.getAssembly():
@@ -1307,6 +1368,8 @@ def setPlacement(part,pla,purgeTouched=False):
     ''' called by solver after solving to adjust the placement.
 
         part: obtained by AsmConstraint.getInfo().Part pla: the new placement
+        pla: new placement
+        purgeTouched: set to True to not touch object
     '''
     if not isinstance(part,tuple):
         if purgeTouched:
@@ -1423,9 +1486,13 @@ class AsmConstraint(AsmGroup):
         if not obj.Removing and prop not in _IgnoredProperties:
             if prop == Constraint.propMultiply() and not FreeCAD.isRestoring():
                 self.checkMultiply()
+                self.elements = None
             Constraint.onChanged(obj,prop)
             Assembly.autoSolve(obj,prop)
 
+    def childVersion(self):
+        return [(o,o.Proxy.version.value) for o in self.Object.Group]
+
     def linkSetup(self,obj):
         self.elements = None
         super(AsmConstraint,self).linkSetup(obj)
@@ -1440,6 +1507,8 @@ class AsmConstraint(AsmGroup):
         Constraint.attach(obj)
         obj.recompute()
 
+        self.version = AsmVersion()
+
     def checkMultiply(self):
         obj = self.Object
         if not obj.Multiply:
@@ -1633,10 +1702,13 @@ class AsmConstraint(AsmGroup):
         if not getattr(self,'_initializing',False) and\
            getattr(self,'parent',None):
             self.checkSupport()
+            if not self.version.update(self.childVersion()):
+                return
             if Constraint.canMultiply(obj):
                 self.checkMultiply()
             self.getElements(True)
             Constraint.execute(obj)
+            self.version.commit()
         return False
 
     def getElements(self,refresh=False):
diff --git a/gui.py b/gui.py
index da2b8fa..d3cd68c 100644
--- a/gui.py
+++ b/gui.py
@@ -516,6 +516,13 @@ class AsmCmdAutoRecompute(AsmCmdCheckable):
     _iconName = 'Assembly_AutoRecompute.svg'
     _saveParam = True
 
+class AsmCmdSmartRecompute(AsmCmdCheckable):
+    _id = 22
+    _menuText = 'Smart recompute'
+    _tooltip = 'Toggle smart recompute to reduce recompution time'
+    _iconName = 'Assembly_SmartRecompute.svg'
+    _saveParam = True
+
 class AsmCmdAutoElementVis(AsmCmdCheckable):
     _id = 9
     _menuText = 'Auto element visibility'