diff --git a/developers/index.php b/developers/index.php
index bb2d93a..9876db8 100644
--- a/developers/index.php
+++ b/developers/index.php
@@ -7,25 +7,25 @@
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    
+ *
  *******************************************************************************/
   define("PATH_SCOUT_HOME", "../");
   include_once(PATH_SCOUT_HOME."constants.php");
-	
+
   # Eclipse Webpages Framework
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); 
+  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
   require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
   require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
   $App = new App();
   $Nav = new Nav();
   $Menu = new Menu();
-  include($App->getProjectCommon()); 
-  
+  include($App->getProjectCommon());
+
   # Begin: page-specific settings.  Change these.
   $pageTitle 	= "Eclipse Scout - Developers";
   $pageKeywords	= "contribution, involve, community, eclipse, scout";
   $pageAuthor	= "BSI Business System Integration AG";
-		
+
   # Paste your HTML content between the EOHTML markers!
   ob_start();
   ?>
@@ -37,33 +37,32 @@
 				<li><a href="#code">Source Code</a></li>
 		</ul> */ ?>
 		</p>
-		
-		<div style="clear: both;" class="homeitem3col" id="dashboard">
-			<h3>Project Dashboards</h3>
-			
-			<p>The <a href="<?php echo URL_SUMMARY; ?>">Project Summary</a> provides you all useful information and links about Eclipse Scout in a nutshell.</p>
-			
-			<p>The <a href="<?php echo URL_PLAN; ?>">Project Plan</a> explains you what is coming up.</p>
-		</div>
-		
+
+        <div style="clear: both;" class="homeitem3col" id="dashboard">
+            <h3>Project Dashboards</h3>
+
+            <p>The <a href="<?php echo URL_SUMMARY; ?>">Project Summary</a> provides you all useful information and links about Eclipse Scout in a nutshell.</p>
+
+            <p>The <a href="<?php echo URL_PLAN; ?>">Project Plan</a> explains you what is coming up.</p>
+        </div>
+
+        <div style="clear: both;" class="homeitem3col" id="code">
+            <h3>Contribution Guide</h3>
+
+            <p>Using Scout and wanting to contribute? Check out our <a href="<?php echo URL_CONTRIBUTION_GUIDE; ?>">Contribution guide</a>.</p>
+        </div>
+
 		<div style="clear: both;" class="homeitem3col" id="code">
 			<h3>Source Code</h3>
-			
+
 			<p>The source code is available in the SVN repository:<br/><a href="<?php echo SOURCE_REPOSITORY; ?>"><code><?php echo SOURCE_REPOSITORY; ?></code></a></p>
-			
+
 			<p><a href="<?php echo URL_MAILING_LIST; ?>">Developer Mailing List</a>: Subscribe to the developer list and get updates about the project's code aspects.</p>
-    
+
     		<p>Visit the <a href="<?php echo URL_OHLOH; ?>">Eclipse Scout page at Ohloh</a> to find project's code aspects, metrics, comments ratio...</p>
 
 		</div>
 	</div>
-	<div id="rightcolumn">
-	  <div class="sideitem">
-	    <h6>Contribution guide</h6>
-	    <div class="center"><a href="<?php echo URL_CONTRIBUTION_GUIDE; ?>" title="Contribution guide"><img align="center" src="<?php echo PATH_SCOUT_HOME; ?>img/document.png" border="0" alt="Document" /></a></div>
-	    <p>Using Scout and wanting to contribute? Check out our <a href="<?php echo URL_CONTRIBUTION_GUIDE; ?>">Contribution guide</a>.</p>
-	  </div> 
-	</div> 
 
   <?php
   $html = ob_get_clean();
diff --git a/downloads/index.php b/downloads/index.php
index b089b05..acc48e1 100644
--- a/downloads/index.php
+++ b/downloads/index.php
@@ -7,20 +7,20 @@
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    
+ *
  *******************************************************************************/
 	define("PATH_SCOUT_HOME", "../");
 	include_once(PATH_SCOUT_HOME."constants.php");
-	
+
   # Eclipse Webpages Framework
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); 
+  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
   require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
   require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
   $App = new App();
   $Nav = new Nav();
   $Menu = new Menu();
-  include($App->getProjectCommon()); 
-  
+  include($App->getProjectCommon());
+
   # Begin: page-specific settings.  Change these.
   $pageTitle 		= "Eclipse Scout - Downloads";
   $pageKeywords	= "download, eclipse, scout, application framework";
@@ -34,7 +34,7 @@
   } else {
 	  $repOverview = NULL;
   }
-		
+
   # Paste your HTML content between the EOHTML markers!
   ob_start();
   ?>
@@ -56,12 +56,12 @@
 		</div>
 		<div style="clear: both;" class="homeitem3col" id="updatesite">
 			<h3>Using the Indigo update Site</h3>
-			
+
 			<p>If you have already an Eclipse IDE running, you might want to add the Scout functionalities to your current Eclipse installation. Select Help > Install new Software in the menu bar and work with the built in update site:
 				<br/><a href="<?php echo INDIGO_UPDATE_SITE; ?>"><code>Indigo - <?php echo INDIGO_UPDATE_SITE; ?></code></a></p>
-			
+
 			<p><img src="<?php echo PATH_SCOUT_HOME.'img/eclipse_install_scout.png'; ?>" width="476" height="317" alt="Eclipse Install Scout"></p>
-			
+
 			<p>You can enter <em>Scout</em> in the filter text or browse through the <em>Application Development Frameworks</em> category.</p>
 		</div>
 		<div style="clear: both;" class="homeitem3col" id="other">
@@ -118,21 +118,10 @@
   }
   ?>
 	</div>
-		<div style="clear: both;" class="homeitem3col" id="included">
-			<h3>Included version</h3>
-			
-			<p>Eclipse Scout is part of the release train of Eclipse Indigo (since release M5).</p>
-			
-			<p>If you work with this version, you can get Scout from the built-in update site:<br/><a href="<?php echo INDIGO_UPDATE_SITE; ?>"><code><?php echo INDIGO_UPDATE_SITE; ?></code></a></p>
-			
-			<p><img src="<?php echo PATH_SCOUT_HOME.'img/eclipse_install_scout.png'; ?>" width="476" height="317" alt="Eclipse Install Scout"></p>
-			
-			<p>You can enter <em>Scout</em> in the filter text or browse through the <em>Application Development Frameworks</em> category.</p>
-		</div>
 
 		<div style="clear: both;" class="homeitem3col" id="source">
 			<h3>Source Code</h3>
-			
+
 			<p>The source code is available in the SVN repository:<br/><a href="<?php echo SOURCE_REPOSITORY; ?>"><code><?php echo SOURCE_REPOSITORY; ?></code></a></p>
 			<p>It is also possible to <a href="<?php echo URL_REPOSITORY_BROWSER; ?>">browse SVN Repository online</a>.</p>
 		</div>
diff --git a/img/tutorial_screenshot.png b/img/tutorial_screenshot.png
index 18b271a..c54a85b 100644
--- a/img/tutorial_screenshot.png
+++ b/img/tutorial_screenshot.png
Binary files differ
diff --git a/support/index.php b/support/index.php
index fe01af7..3ecb659 100644
--- a/support/index.php
+++ b/support/index.php
@@ -7,43 +7,66 @@
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *    
+ *
  *******************************************************************************/
   define("PATH_SCOUT_HOME", "../");
   include_once(PATH_SCOUT_HOME."constants.php");
-	
+
   # Eclipse Webpages Framework
-  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); 
+  require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
   require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
   require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
   $App = new App();
   $Nav = new Nav();
   $Menu = new Menu();
-  include($App->getProjectCommon()); 
-  
+  include($App->getProjectCommon());
+
   # Begin: page-specific settings.  Change these.
   $pageTitle 	= "Eclipse Scout - Support";
   $pageKeywords	= "support, community, eclipse, scout";
   $pageAuthor	= "BSI Business System Integration AG";
-		
+
   # Paste your HTML content between the EOHTML markers!
   ob_start();
   ?>
 	<div id="midcolumn">
 		<h1>Get Support</h1>
-		<p>Do you need help with Eclipse Scout?
+		<p>Are you looking for help with Eclipse Scout?
 <?php /*	<ul>
-				<li><a href="#community">Community support</a></li>
+				<li><a href="#community">Eclipse Scout Community Support</a></li>
 		</ul> */ ?>
 		</p>
-		
+
 		<div style="clear: both;" class="homeitem3col" id="community">
-			<h3>Community support</h3>
-			<p>There are different way to get support from the community:</p>
-			<p><a href="<?php echo URL_WIKI; ?>">Eclipsepedia</a>: Documentation including a simple "Getting Started" tutorial can be found on the Eclipse wiki.</p>
-			<p><a href="<?php echo URL_SCOUT_FORUM; ?>">Eclipse Scout Forum</a>: Ask every question you like to on the forum.</p>
-			<p><a href="<?php echo URL_BUGZILLA; ?>">Eclipse Scout Bugzilla</a>: review and create Bugzilla entries.</p>
+			<h3>Eclipse Scout Community Support</h3>
+			<p>There are different ways to get support from the community.
+			Before you ask questions in the forum or open new bugs it is considered polite to do the following:
+			</p>
+
+			<ol>
+			  <li>Check the <a href="<?php echo URL_WIKI; ?>">Scout Wiki</a> for information.</li>
+			  <li>Find relevant posts/answers in the <a href="<?php echo URL_SCOUT_FORUM; ?>">Scout Forum.</a></li>
+			  <li>Verify the <a href="<?php echo URL_BUGZILLA; ?>">Scout Bugzilla</a> for open bugs/enhancements.</li>
+			</ol>
+
+            <p>If your issue is not already addressed properly, feel free to:</p>
+
+            <ul>
+			  <li><a href="<?php echo URL_SCOUT_FORUM; ?>">Eclipse Scout Forum</a>: Ask your question on the forum.</li>
+			  <li><a href="<?php echo URL_BUGZILLA; ?>">Eclipse Scout Bugzilla</a>: Create a new Bugzilla entry.</li>
+			</ul>
 		</div>
+        <div style="clear: both;" class="homeitem3col" id="community">
+            <h3>Eclipse Scout Professional Support</h3>
+            <p>Scout has been developed at <a href="http://www.bsiag.com/en/home.html">BSI</a> since 2001.
+            In 2011, BSI has published Scout under the Eclipse Public License.
+            </p>
+            <p>If you plan to prototype Eclipse Scout applications,
+            ask BSI for training and consulting to maximize your value.
+            When your organization decides for Scout, you want to rely on the experience provided by our Scout experts at BSI.
+            For further information please contact <a href="mail:scout@bsiag.com">scout@bsiag.com</a>.
+            </p>
+        </div>
 	</div>
 
   <?php
