diff --git a/examples/org.eclipse.graphiti.doc/resources/docu/gfw/add-feature.htm b/examples/org.eclipse.graphiti.doc/resources/docu/gfw/add-feature.htm
index 2f628d9..3160361 100644
--- a/examples/org.eclipse.graphiti.doc/resources/docu/gfw/add-feature.htm
+++ b/examples/org.eclipse.graphiti.doc/resources/docu/gfw/add-feature.htm
@@ -1,190 +1,192 @@
-﻿<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-
-<head>
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<title>Providing add functionality</title>
-<link href="../book.css" rel="Stylesheet" type="text/css">
-<link href="../code.css" rel="Stylesheet" type="text/css">
-</head>
-
-<body>
-
-<h1>Providing Add Functionality</h1>
-<h2>Architecture: Pictogram Model Linked With Domain Model</h2>
-<p>In the terms of&nbsp; Graphiti “add” means to add a graphical representation 
-of an existing domain model object (= business object) to the diagram. What kinds 
-of business objects can be added to a diagram of a specific type is decided by the 
-add features delivered by the feature provider.</p>
-<p>For our example the graphical representation of a EClass is illustrated in the 
-Figure. We want to see a rounded rectangle containing a separator like horizontal 
-line and above that line the name of the corresponding EClass.</p>
-<p>&nbsp;</p>
-<p>
-<img alt="Graphical representation of a 
-EClass" height="117" src="visio/package-shape.gif" width="155"></p>
-<p><strong>Figure: Graphical representation of a EClass</strong></p>
-<p>&nbsp;</p>
-<p>Graphiti supports a kind of linkage between elements of the domain model and 
-elements of the model defining the graphical representation – the so called <em>
-Pictograms Model.</em> These links are called <em>pictogram links</em>. Each diagram 
-contains one container for all pictogram links – called <em>diagram link</em>.</p>
-<p>You can see the linkage structure of the example in the Figure: Column one shows 
-the entity model of the graphical representation of exactly one EClass. A container 
-shape aggregates two child shapes (a container shape itself can be aggregated in 
-another container shape or in a diagram). All three shapes themselves aggregate 
-specific graphics algorithms, providing the complete information to allow the rendering 
-on a screen. Examples for this information are background color, foreground color, 
-size, position, visibility and line width. In our example we have a rounded rectangle 
-providing an additional corner radius, a polyline having defined end- and bendpoints 
-and a text label containing a text value.</p>
-<p>&nbsp;</p>
-<p><img alt="" height="350" src="visio/pictogram-model.png" width="557"></p>
-<p><strong>Figure: Linkage structure example</strong></p>
-<p>&nbsp;</p>
-<p>The container shape and likewise the shape containing the text label are related 
-to a corresponding EClass. This relationship is realized through special link objects 
-(pictogram link) holding references to both sides: to the pictograms side and to 
-the business side.</p>
-<h2>Creating an add feature</h2>
-<p>In this example we want to enable the editor’s users to add EClasses to the diagram. 
-As a result it should be possible to drag an EClass from the tree and drop it on 
-the diagram. Therefore we have to create an add feature and make it available in 
-the feature provider.</p>
-<p>An add feature has to implement the interface
-<a href="../../../javadoc/org/eclipse/graphiti/features/IAddFeature.html">IAddFeature</a>. 
-Instead of implementing it directly it should extend one of the available base classes. 
-In this example we extend the base class
-<a href="../../../javadoc/org/eclipse/graphiti/features/impl/AbstractAddShapeFeature.html">
-AbstractAddShapeFeature</a>.</p>
-<p>In this case we have to implement/overwrite two methods:</p>
-<ul>
-	<li>The method
-	<a href="../../../javadoc/org/eclipse/graphiti/func/IAdd.html#canAdd(org.eclipse.graphiti.features.context.IAddContext)">
-	canAdd</a> has to check the given context and therefore it decides if a business 
-	object can be added.</li>
-	<li>The method
-	<a href="../../../javadoc/org/eclipse/graphiti/func/IAdd.html#add(org.eclipse.graphiti.features.context.IAddContext)">
-	add</a> finally has to create the pictogram structure described above and has 
-	to establish the linkage to the business object. Additionally we have to create 
-	graphics algorithms and place them at the appropriate location (get location 
-	from given context). Additionally, the name of the EClass has to be set as the 
-	text label’s value. </li>
-</ul>
-<p>You can see the complete implementation of the add feature here:</p>
-<!-- Begin code ------------------------------------------------------------------------------- -->
-<p>&nbsp;</p>
-<div class="literallayout">
-	<div class="incode">
-		<p class="code"><span class="keyword">package </span>org.eclipse.graphiti.examples.tutorial.features;<br>&nbsp;<br>
-		<span class="keyword">public class</span> TutorialAddEClassFeature
-		<span class="keyword">extends </span>AbstractAddShapeFeature {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
-		<span class="keyword">private static final</span> IColorConstant
-		<span class="string"><em>CLASS_TEXT_FOREGROUND</em></span> =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">new </span>ColorConstant(51, 51, 153);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
-		<span class="keyword">private static final</span> IColorConstant
-		<span class="string"><em>CLASS_FOREGROUND</em></span> =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">new </span>ColorConstant(255, 102, 0);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
-		<span class="keyword">private static final</span> IColorConstant
-		<span class="string"><em>CLASS_BACKGROUND</em></span> =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">new </span>ColorConstant(255, 204, 153);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
-		<span class="keyword">public </span>TutorialAddEClassFeature(IFeatureProvider 
-		fp) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">super</span>(fp);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
-		<span class="keyword">public </span>boolean canAdd(IAddContext context) 
-		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 
-		check if user wants to add a EClass</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">if </span>(context.getNewObject()
-		<span class="keyword">instanceof </span>EClass) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// check if user wants to add to a diagram</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">if (</span>context.getTargetContainer()
-		<span class="keyword">instanceof </span>Diagram) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">&nbsp;return true</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">&nbsp;return false</span>;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
-		<span class="keyword">public </span>PictogramElement add(IAddContext context) 
-		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EClass addedClass = (EClass) 
-		context.getNewObject();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Diagram 
-		targetDiagram = (Diagram) context.getTargetContainer();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// CONTAINER SHAPE WITH ROUNDED RECTANGLE</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		IPeCreateService peCreateService = Graphiti.getPeCreateService();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		ContainerShape containerShape =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		peCreateService.createContainerShape(targetDiagram,
-		<span class="keyword">true</span>);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// define a default size for the shape</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">int </span>width = 100;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">int </span>height = 50; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		IGaService gaService = Graphiti.getGaService();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// create and set graphics algorithm</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		RoundedRectangle roundedRectangle =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		gaService.createRoundedRectangle(containerShape, 5, 5);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		roundedRectangle.setForeground(manageColor(<em class="string">CLASS_FOREGROUND</em>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		roundedRectangle.setBackground(manageColor(<span class="string"><em>CLASS_BACKGROUND</em></span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		roundedRectangle.setLineWidth(2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		gaService.setLocationAndSize(roundedRectangle,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		context.getX(), context.getY(), width, height);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// if added Class has no resource we add it to the 
-		resource <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		// of the diagram<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		// in a real scenario the business model would have its own resource</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">&nbsp;if</span> (addedClass.eResource() ==
-		<span class="keyword">null</span>) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		getDiagram().eResource().getContents().add(addedClass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// create link and wire it</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		link(containerShape, addedClass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		}<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// SHAPE WITH LINE</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// create shape for line</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		Shape shape = peCreateService.createShape(containerShape,
-		<span class="keyword">false</span>);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// create and set graphics algorithm</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		Polyline polyline =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		gaService.createPolyline(shape, <span class="keyword">new int</span>[] { 
-		0, 20, width, 20 });<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		polyline.setForeground(manageColor(<span class="string"><em>CLASS_FOREGROUND</em></span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		polyline.setLineWidth(2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		}<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// SHAPE WITH TEXT</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// create shape for text</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		Shape shape = peCreateService.createShape(containerShape,
-		<span class="keyword">false</span>);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// create and set text graphics algorithm</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		Text text = gaService.createDefaultText(getDiagram(), shape,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		addedClass.getName());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		text.setForeground(manageColor(<span class="string"><em>CLASS_TEXT_FOREGROUND</em></span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		text.setHorizontalAlignment(Orientation.<span class="string"><em>ALIGNMENT_CENTER</em></span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		text.setVerticalAlignment(Orientation.<span class="string"><em>ALIGNMENT_CENTER</em></span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		text.getFont().setBold(<span class="keyword">true</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		gaService.setLocationAndSize(text, 0, 0, width, 20);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="comment">// create link and wire it</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		link(shape, addedClass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">return </span>containerShape;<br>&nbsp;&nbsp;&nbsp; 
-		}<br>}<br>&nbsp; </p>
-	</div>
-</div>
-<p>&nbsp;</p>
-<!-- End code ------------------------------------------------------------------------------- -->
-<h2>Test: Add a EClass</h2>
-<p class="Note">Note: if the project wizard for a &quot;<a href="example-projects.htm">New 
-Graphiti Sample Project</a>&quot; does not work correctly and you can not test the add 
-feature as described below, please continue with the next chapter and
-<a href="create-feature.htm">provide create functionality</a>. That will allow to 
-test the add feature directly in the diagram.</p>
-<p>Now we can start the editor again. It should be possible to drop an EClass from 
-the tree of the Graphiti &quot;Test&quot; project into the diagram Test-1. </p>
-<p>&nbsp;</p>
-<p><img alt="" height="302" src="visio/predefined-eclass.png" width="788"></p>
-<p>&nbsp;</p>
-<p><strong>Figure: Add PredefinedEClass to the editor</strong></p>
-<p>&nbsp;</p>
-<p>Without any further implementations it should be possible to move the EClass 
-shapes around, resize them, remove them (context menu) and even delete them.</p>
-<p>&nbsp;</p>
-
-</body>
-
-</html>
+﻿<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+<title>Providing add functionality</title>
+<link href="../book.css" rel="Stylesheet" type="text/css">
+<link href="../code.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+
+<h1>Providing Add Functionality</h1>
+<p>A detailed description of the architecture and basic concepts of Graphiti can 
+be found <a href="graphiti-introduction.htm#Architecture_and_Basic_Concepts">here</a>.</p>
+<h2>Architecture: Pictogram Model Linked With Domain Model</h2>
+<p>In the terms of&nbsp; Graphiti “add” means to add a graphical representation 
+of an existing domain model object (= business object) to the diagram. What kinds 
+of business objects can be added to a diagram of a specific type is decided by the 
+add features delivered by the feature provider.</p>
+<p>For our example the graphical representation of a EClass is illustrated in the 
+Figure. We want to see a rounded rectangle containing a separator like horizontal 
+line and above that line the name of the corresponding EClass.</p>
+<p>&nbsp;</p>
+<p>
+<img alt="Graphical representation of a 
+EClass" height="117" src="visio/package-shape.gif" width="155"></p>
+<p><strong>Figure: Graphical representation of a EClass</strong></p>
+<p>&nbsp;</p>
+<p>Graphiti supports a kind of linkage between elements of the domain model and 
+elements of the model defining the graphical representation – the so called <em>
+Pictograms Model.</em> These links are called <em>pictogram links</em>. Each diagram 
+contains one container for all pictogram links – called <em>diagram link</em>.</p>
+<p>You can see the linkage structure of the example in the Figure: Column one shows 
+the entity model of the graphical representation of exactly one EClass. A container 
+shape aggregates two child shapes (a container shape itself can be aggregated in 
+another container shape or in a diagram). All three shapes themselves aggregate 
+specific graphics algorithms, providing the complete information to allow the rendering 
+on a screen. Examples for this information are background color, foreground color, 
+size, position, visibility and line width. In our example we have a rounded rectangle 
+providing an additional corner radius, a polyline having defined end- and bendpoints 
+and a text label containing a text value.</p>
+<p>&nbsp;</p>
+<p><img alt="" height="350" src="visio/pictogram-model.png" width="557"></p>
+<p><strong>Figure: Linkage structure example</strong></p>
+<p>&nbsp;</p>
+<p>The container shape and likewise the shape containing the text label are related 
+to a corresponding EClass. This relationship is realized through special link objects 
+(pictogram link) holding references to both sides: to the pictograms side and to 
+the business side.</p>
+<h2>Creating an add feature</h2>
+<p>In this example we want to enable the editor’s users to add EClasses to the diagram. 
+As a result it should be possible to drag an EClass from the tree and drop it on 
+the diagram. Therefore we have to create an add feature and make it available in 
+the feature provider.</p>
+<p>An add feature has to implement the interface
+<a href="../../../javadoc/org/eclipse/graphiti/features/IAddFeature.html">IAddFeature</a>. 
+Instead of implementing it directly it should extend one of the available base classes. 
+In this example we extend the base class
+<a href="../../../javadoc/org/eclipse/graphiti/features/impl/AbstractAddShapeFeature.html">
+AbstractAddShapeFeature</a>.</p>
+<p>In this case we have to implement/overwrite two methods:</p>
+<ul>
+	<li>The method
+	<a href="../../../javadoc/org/eclipse/graphiti/func/IAdd.html#canAdd(org.eclipse.graphiti.features.context.IAddContext)">
+	canAdd</a> has to check the given context and therefore it decides if a business 
+	object can be added.</li>
+	<li>The method
+	<a href="../../../javadoc/org/eclipse/graphiti/func/IAdd.html#add(org.eclipse.graphiti.features.context.IAddContext)">
+	add</a> finally has to create the pictogram structure described above and has 
+	to establish the linkage to the business object. Additionally we have to create 
+	graphics algorithms and place them at the appropriate location (get location 
+	from given context). Additionally, the name of the EClass has to be set as the 
+	text label’s value. </li>
+</ul>
+<p>You can see the complete implementation of the add feature here:</p>
+<!-- Begin code ------------------------------------------------------------------------------- -->
+<p>&nbsp;</p>
+<div class="literallayout">
+	<div class="incode">
+		<p class="code"><span class="keyword">package </span>org.eclipse.graphiti.examples.tutorial.features;<br>&nbsp;<br>
+		<span class="keyword">public class</span> TutorialAddEClassFeature
+		<span class="keyword">extends </span>AbstractAddShapeFeature {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
+		<span class="keyword">private static final</span> IColorConstant
+		<span class="string"><em>CLASS_TEXT_FOREGROUND</em></span> =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">new </span>ColorConstant(51, 51, 153);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
+		<span class="keyword">private static final</span> IColorConstant
+		<span class="string"><em>CLASS_FOREGROUND</em></span> =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">new </span>ColorConstant(255, 102, 0);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
+		<span class="keyword">private static final</span> IColorConstant
+		<span class="string"><em>CLASS_BACKGROUND</em></span> =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">new </span>ColorConstant(255, 204, 153);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
+		<span class="keyword">public </span>TutorialAddEClassFeature(IFeatureProvider 
+		fp) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">super</span>(fp);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
+		<span class="keyword">public </span>boolean canAdd(IAddContext context) 
+		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="comment">// 
+		check if user wants to add a EClass</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">if </span>(context.getNewObject()
+		<span class="keyword">instanceof </span>EClass) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// check if user wants to add to a diagram</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">if (</span>context.getTargetContainer()
+		<span class="keyword">instanceof </span>Diagram) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">&nbsp;return true</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">&nbsp;return false</span>;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
+		<span class="keyword">public </span>PictogramElement add(IAddContext context) 
+		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EClass addedClass = (EClass) 
+		context.getNewObject();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Diagram 
+		targetDiagram = (Diagram) context.getTargetContainer();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// CONTAINER SHAPE WITH ROUNDED RECTANGLE</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		IPeCreateService peCreateService = Graphiti.getPeCreateService();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		ContainerShape containerShape =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		peCreateService.createContainerShape(targetDiagram,
+		<span class="keyword">true</span>);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// define a default size for the shape</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">int </span>width = 100;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">int </span>height = 50; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		IGaService gaService = Graphiti.getGaService();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// create and set graphics algorithm</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		RoundedRectangle roundedRectangle =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		gaService.createRoundedRectangle(containerShape, 5, 5);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		roundedRectangle.setForeground(manageColor(<em class="string">CLASS_FOREGROUND</em>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		roundedRectangle.setBackground(manageColor(<span class="string"><em>CLASS_BACKGROUND</em></span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		roundedRectangle.setLineWidth(2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		gaService.setLocationAndSize(roundedRectangle,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		context.getX(), context.getY(), width, height);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// if added Class has no resource we add it to the 
+		resource <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		// of the diagram<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		// in a real scenario the business model would have its own resource</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">&nbsp;if</span> (addedClass.eResource() ==
+		<span class="keyword">null</span>) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		getDiagram().eResource().getContents().add(addedClass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// create link and wire it</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		link(containerShape, addedClass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		}<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// SHAPE WITH LINE</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// create shape for line</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		Shape shape = peCreateService.createShape(containerShape,
+		<span class="keyword">false</span>);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// create and set graphics algorithm</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		Polyline polyline =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		gaService.createPolyline(shape, <span class="keyword">new int</span>[] { 
+		0, 20, width, 20 });<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		polyline.setForeground(manageColor(<span class="string"><em>CLASS_FOREGROUND</em></span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		polyline.setLineWidth(2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		}<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// SHAPE WITH TEXT</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// create shape for text</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		Shape shape = peCreateService.createShape(containerShape,
+		<span class="keyword">false</span>);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// create and set text graphics algorithm</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		Text text = gaService.createDefaultText(getDiagram(), shape,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		addedClass.getName());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		text.setForeground(manageColor(<span class="string"><em>CLASS_TEXT_FOREGROUND</em></span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		text.setHorizontalAlignment(Orientation.<span class="string"><em>ALIGNMENT_CENTER</em></span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		text.setVerticalAlignment(Orientation.<span class="string"><em>ALIGNMENT_CENTER</em></span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		text.getFont().setBold(<span class="keyword">true</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		gaService.setLocationAndSize(text, 0, 0, width, 20);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="comment">// create link and wire it</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		link(shape, addedClass);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">return </span>containerShape;<br>&nbsp;&nbsp;&nbsp; 
+		}<br>}<br>&nbsp; </p>
+	</div>
+</div>
+<p>&nbsp;</p>
+<!-- End code ------------------------------------------------------------------------------- -->
+<h2>Test: Add a EClass</h2>
+<p class="Note">Note: if the project wizard for a &quot;<a href="example-projects.htm">New 
+Graphiti Sample Project</a>&quot; does not work correctly and you can not test the add 
+feature as described below, please continue with the next chapter and
+<a href="create-feature.htm">provide create functionality</a>. That will allow to 
+test the add feature directly in the diagram.</p>
+<p>Now we can start the editor again. It should be possible to drop an EClass from 
+the tree of the Graphiti &quot;Test&quot; project into the diagram Test-1. </p>
+<p>&nbsp;</p>
+<p><img alt="" height="302" src="visio/predefined-eclass.png" width="788"></p>
+<p>&nbsp;</p>
+<p><strong>Figure: Add PredefinedEClass to the editor</strong></p>
+<p>&nbsp;</p>
+<p>Without any further implementations it should be possible to move the EClass 
+shapes around, resize them, remove them (context menu) and even delete them.</p>
+<p>&nbsp;</p>
+
+</body>
+
+</html>
diff --git a/examples/org.eclipse.graphiti.doc/resources/docu/gfw/features.htm b/examples/org.eclipse.graphiti.doc/resources/docu/gfw/features.htm
index b8a4754..ff02c85 100644
--- a/examples/org.eclipse.graphiti.doc/resources/docu/gfw/features.htm
+++ b/examples/org.eclipse.graphiti.doc/resources/docu/gfw/features.htm
@@ -1,73 +1,73 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-
-<head>
-<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
-<title>Features</title>
-<link href="../book.css" rel="Stylesheet" type="text/css">
-<link href="../code.css" rel="Stylesheet" type="text/css">
-</head>
-
-<body>
-
-<h1>Features</h1>
-<h2>Architecture: Diagram Type Agent and Interaction Component</h2>
-<p>In the graphics framework&#39;s architecture a UI platform dependent and a diagram 
-type independent interaction component communicates with a platform independent 
-diagram type agent (see Figure). A diagram type agent consists mainly of a diagram 
-type provider, a feature provider and its provided features.</p>
-<p>&nbsp;</p>
-<p style="page-break-after: avoid">
-<img alt="" height="276" src="visio\diagram-type-agent.gif" width="375"> </p>
-<p><strong>Figure: Interaction Component talks to Diagram Type Agent</strong></p>
-<p>&nbsp;</p>
-<p>In this chapter we want to implement a feature provider and wire it with the 
-diagram type provider.</p>
-<h2>Create a Feature Provider</h2>
-<p>A feature provider has to implement interface
-<a href="../../../javadoc/org/eclipse/graphiti/features/IFeatureProvider.html">IFeatureProvider. 
-Instead of implementing it directly you should extend one of the available base 
-classes. In this example we extend class </a>
-<a href="../../../javadoc/org/eclipse/graphiti/ui/features/DefaultFeatureProvider.html">
-DefaultFeatureProvider</a> and do not have to implement or overwrite any methods 
-initially.</p>
-<p>You can see the complete implementation of the feature provider here:</p>
-<!-- Begin code ------------------------------------------------------------------------------- -->
-<p>&nbsp;</p>
-<div class="literallayout">
-	<div class="incode">
-		<p class="code"><span class="keyword">package </span>org.eclipse.graphiti.examples.tutorial.diagram;<br>
-		<br><span class="keyword">public class</span> TutorialFeatureProvider
-		<span class="keyword">extends </span>DefaultFeatureProvider {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
-		<span class="keyword">public </span>TutorialFeatureProvider(IDiagramTypeProvider 
-		dtp) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-		<span class="keyword">super</span>(dtp);<br>&nbsp;&nbsp;&nbsp; }<br>}&nbsp;
-		</p>
-	</div>
-</div>
-<p>&nbsp;</p>
-<!-- End code ------------------------------------------------------------------------------- -->
-<p>To create and set our feature provider in the diagram type provider we just have 
-to add one line in the diagram type provider&#8217;s constructor:</p>
-<!-- Begin code ------------------------------------------------------------------------------- -->
-<p>&nbsp;</p>
-<div class="literallayout">
-	<div class="incode">
-		<p class="code">&nbsp;&nbsp;&nbsp; <span class="keyword">public </span>MyTutorialDiagramTypeProvider() 
-		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">super</span>();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-		setFeatureProvider(new TutorialFeatureProvider(this));<br>&nbsp;&nbsp;&nbsp; 
-		}</p>
-	</div>
-</div>
-<p>&nbsp;</p>
-<!-- End code ------------------------------------------------------------------------------- -->
-<h2>Test: Open the Empty Diagram Editor</h2>
-<p>Since the basic steps are done you can run the first version of this tutorial 
-editor. It should be possible to create and open a diagram.</p>
-<p>For this follow the steps described in the <a href="example-projects.htm">example 
-project</a> to open the empty diagram editor.</p>
-<p>&nbsp;</p>
-
-</body>
-
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+
+<head>
+<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
+<title>Features</title>
+<link href="../book.css" rel="Stylesheet" type="text/css">
+<link href="../code.css" rel="Stylesheet" type="text/css">
+</head>
+
+<body>
+
+<h1>Features</h1>
+<h2>Architecture: Diagram Type Agent and Interaction Component</h2>
+<p>In the graphics framework&#39;s <a href="graphiti-introduction.htm#Architecture_and_Basic_Concepts">architecture</a> a UI platform dependent and a diagram 
+type independent interaction component communicates with a platform independent 
+diagram type agent (see Figure). A diagram type agent consists mainly of a diagram 
+type provider, a feature provider and its provided features.</p>
+<p>&nbsp;</p>
+<p style="page-break-after: avoid">
+<img alt="" height="276" src="visio\diagram-type-agent.gif" width="375"> </p>
+<p><strong>Figure: Interaction Component talks to Diagram Type Agent</strong></p>
+<p>&nbsp;</p>
+<p>In this chapter we want to implement a feature provider and wire it with the 
+diagram type provider.</p>
+<h2>Create a Feature Provider</h2>
+<p>A feature provider has to implement interface
+<a href="../../../javadoc/org/eclipse/graphiti/features/IFeatureProvider.html">IFeatureProvider</a>. 
+Instead of implementing it directly you should extend one of the available base 
+classes. In this example we extend class 
+<a href="../../../javadoc/org/eclipse/graphiti/ui/features/DefaultFeatureProvider.html">
+DefaultFeatureProvider</a> and do not have to implement or overwrite any methods 
+initially.</p>
+<p>You can see the complete implementation of the feature provider here:</p>
+<!-- Begin code ------------------------------------------------------------------------------- -->
+<p>&nbsp;</p>
+<div class="literallayout">
+	<div class="incode">
+		<p class="code"><span class="keyword">package </span>org.eclipse.graphiti.examples.tutorial.diagram;<br>
+		<br><span class="keyword">public class</span> TutorialFeatureProvider
+		<span class="keyword">extends </span>DefaultFeatureProvider {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;
+		<span class="keyword">public </span>TutorialFeatureProvider(IDiagramTypeProvider 
+		dtp) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+		<span class="keyword">super</span>(dtp);<br>&nbsp;&nbsp;&nbsp; }<br>}&nbsp;
+		</p>
+	</div>
+</div>
+<p>&nbsp;</p>
+<!-- End code ------------------------------------------------------------------------------- -->
+<p>To create and set our feature provider in the diagram type provider we just have 
+to add one line in the diagram type provider&#8217;s constructor:</p>
+<!-- Begin code ------------------------------------------------------------------------------- -->
+<p>&nbsp;</p>
+<div class="literallayout">
+	<div class="incode">
+		<p class="code">&nbsp;&nbsp;&nbsp; <span class="keyword">public </span>MyTutorialDiagramTypeProvider() 
+		{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="keyword">super</span>();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+		setFeatureProvider(new TutorialFeatureProvider(this));<br>&nbsp;&nbsp;&nbsp; 
+		}</p>
+	</div>
+</div>
+<p>&nbsp;</p>
+<!-- End code ------------------------------------------------------------------------------- -->
+<h2>Test: Open the Empty Diagram Editor</h2>
+<p>Since the basic steps are done you can run the first version of this tutorial 
+editor. It should be possible to create and open a diagram.</p>
+<p>For this follow the steps described in the <a href="example-projects.htm">example 
+project</a> to open the empty diagram editor.</p>
+<p>&nbsp;</p>
+
+</body>
+
+</html>
