diff --git a/bundles/org.eclipse.remote.console/.project b/bundles/org.eclipse.remote.console/.project
index 0d4f3af..da0bcc4 100644
--- a/bundles/org.eclipse.remote.console/.project
+++ b/bundles/org.eclipse.remote.console/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.remote.console/META-INF/MANIFEST.MF b/bundles/org.eclipse.remote.console/META-INF/MANIFEST.MF
index 07fd923..581674f 100644
--- a/bundles/org.eclipse.remote.console/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.remote.console/META-INF/MANIFEST.MF
@@ -2,13 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.remote.console;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.remote.internal.console.Activator
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %pluginProvider
-Export-Package: org.eclipse.remote.console
+Export-Package: org.eclipse.remote.console,
+ org.eclipse.remote.console.actions
 Import-Package: org.eclipse.core.commands,
  org.eclipse.core.runtime,
  org.eclipse.core.runtime.jobs,
diff --git a/bundles/org.eclipse.remote.console/plugin.xml b/bundles/org.eclipse.remote.console/plugin.xml
index 592289c..c016588 100644
--- a/bundles/org.eclipse.remote.console/plugin.xml
+++ b/bundles/org.eclipse.remote.console/plugin.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.4"?>
 <plugin>
+   <extension-point id="org.eclipse.remote.console.toolbar" name="org.eclipse.remote.console.toolbar" schema="schema/consoleToolbar.exsd"/>
    <extension
          point="org.eclipse.ui.console.consoleFactories">
       <consoleFactory
diff --git a/bundles/org.eclipse.remote.console/pom.xml b/bundles/org.eclipse.remote.console/pom.xml
index 68b1b00..0251ef1 100644
--- a/bundles/org.eclipse.remote.console/pom.xml
+++ b/bundles/org.eclipse.remote.console/pom.xml
@@ -11,6 +11,6 @@
   </parent>
 
   <artifactId>org.eclipse.remote.console</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
+  <version>1.1.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.remote.console/schema/consoleToolbar.exsd b/bundles/org.eclipse.remote.console/schema/consoleToolbar.exsd
new file mode 100644
index 0000000..0b1adee
--- /dev/null
+++ b/bundles/org.eclipse.remote.console/schema/consoleToolbar.exsd
@@ -0,0 +1,116 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.remote.console" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.remote.console" id="org.eclipse.remote.console.toolbar" name="Terminal Console Toolbar Contributions"/>
+      </appinfo>
+      <documentation>
+         [Enter description of this extension point.]
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="action" minOccurs="0" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="action">
+      <complexType>
+         <attribute name="id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  Identifier for this action
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="connectionType" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The connection type this Action applies to
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="actionFactory" type="string" use="required">
+            <annotation>
+               <documentation>
+                  A class implementing IConsoleActionFactory to be called to create the Action
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.remote.console.actions.IConsoleActionFactory"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java
index a9af9f2..ff53269 100644
--- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/TerminalConsoleUtility.java
@@ -17,13 +17,15 @@
 import org.eclipse.ui.console.IConsole;
 
 /**
- * A collection of public API utility methods to open
- * consoles to IRemoteConnection objects
+ * A collection of public API utility methods to open consoles to
+ * IRemoteConnection objects
+ * 
+ * @since 1.1
  */
 public class TerminalConsoleUtility {
 	/**
-	 * Opens a dialog to allow selection of an IRemoteConnection,
-	 * encoding, etc. and then open a console to it.
+	 * Opens a dialog to allow selection of an IRemoteConnection, encoding, etc.
+	 * and then open a console to it.
 	 */
 	public void openConsole() {
 		new TerminalConsoleFactory().openConsole();
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleAction.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/ConsoleAction.java
similarity index 67%
rename from bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleAction.java
rename to bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/ConsoleAction.java
index 9df1416..0b5d60c 100644
--- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleAction.java
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/ConsoleAction.java
@@ -8,13 +8,16 @@
  * Contributors:
  * QNX Software Systems - Initial API and implementation
  *******************************************************************************/
-package org.eclipse.remote.internal.console.actions;
+package org.eclipse.remote.console.actions;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.remote.internal.console.Activator;
 
+/**
+ * @since 1.1
+ */
 public abstract class ConsoleAction extends Action {
 	public ConsoleAction(String id) {
 		this(id, 0);
@@ -25,27 +28,20 @@
 		setId(id);
 	}
 
-	protected void setupAction(String text, String tooltip,
-			String image, String enabledImage, String disabledImage,
+	protected void setupAction(String text, String tooltip, String image, String enabledImage, String disabledImage,
 			boolean enabled) {
 		ImageRegistry imageRegistry = Activator.getDefault().getImageRegistry();
 		setupAction(text, tooltip, image, enabledImage, disabledImage, enabled, imageRegistry);
 	}
 
-	protected void setupAction(String text, String tooltip,
-			String hoverImage, String enabledImage, String disabledImage,
-			boolean enabled, ImageRegistry imageRegistry) {
-		setupAction(text,
-				tooltip,
-				imageRegistry.getDescriptor(hoverImage),
-				imageRegistry.getDescriptor(enabledImage),
-				imageRegistry.getDescriptor(disabledImage),
-				enabled);
+	protected void setupAction(String text, String tooltip, String hoverImage, String enabledImage,
+			String disabledImage, boolean enabled, ImageRegistry imageRegistry) {
+		setupAction(text, tooltip, imageRegistry.getDescriptor(hoverImage), imageRegistry.getDescriptor(enabledImage),
+				imageRegistry.getDescriptor(disabledImage), enabled);
 	}
 
-	protected void setupAction(String text, String tooltip,
-			ImageDescriptor hoverImage, ImageDescriptor enabledImage, ImageDescriptor disabledImage,
-			boolean enabled) {
+	protected void setupAction(String text, String tooltip, ImageDescriptor hoverImage, ImageDescriptor enabledImage,
+			ImageDescriptor disabledImage, boolean enabled) {
 		setText(text);
 		setToolTipText(tooltip);
 		setEnabled(enabled);
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/IConsoleActionFactory.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/IConsoleActionFactory.java
new file mode 100644
index 0000000..fff843a
--- /dev/null
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/console/actions/IConsoleActionFactory.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.console.actions;
+
+import org.eclipse.core.runtime.IAdaptable;
+
+/**
+ * @since 1.1
+ */
+public interface IConsoleActionFactory {
+	public ConsoleAction createAction(String actionId, String connectionType, IAdaptable adapter);
+}
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java
index 8fdfc7b..011ad72 100644
--- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsole.java
@@ -20,7 +20,6 @@
 import org.eclipse.ui.part.IPageBookViewPage;
 import org.eclipse.ui.progress.UIJob;
 
-@SuppressWarnings("restriction")
 public class TerminalConsole extends AbstractConsole {
 	private final String encoding;
 	private final TerminalConsoleConnector terminalConnector;
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleExtensionManager.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleExtensionManager.java
new file mode 100644
index 0000000..f9cbdb6
--- /dev/null
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsoleExtensionManager.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2016 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.remote.internal.console;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.remote.console.actions.IConsoleActionFactory;
+
+public class TerminalConsoleExtensionManager {
+	private static TerminalConsoleExtensionManager instance;
+	private Map<String, List<String>> actions;
+	private Map<String, IConsoleActionFactory> factories;
+	private Map<String, IConfigurationElement> elements;
+
+	private TerminalConsoleExtensionManager() {
+	}
+
+	public static TerminalConsoleExtensionManager getInstance() {
+		if (instance == null) {
+			instance = new TerminalConsoleExtensionManager();
+		}
+		return instance;
+	}
+
+	public List<String> getActionsForType(String id) {
+		initialize();
+		List<String> list = actions.get(id);
+		return list == null ? new ArrayList<String>() : list;
+	}
+	
+	public IConsoleActionFactory getFactory(String id) {
+		return factories.get(id);
+	}
+
+	private void initialize() {
+		if (actions == null) {
+			actions = new LinkedHashMap<>();
+			elements = new LinkedHashMap<>();
+			factories = new HashMap<>();
+			IExtensionRegistry registry = Platform.getExtensionRegistry();
+			IExtensionPoint point = registry
+					.getExtensionPoint(Activator.getDefault().getBundle().getSymbolicName() + ".toolbar");
+			for (IExtension extension : point.getExtensions()) {
+				for (IConfigurationElement element : extension.getConfigurationElements()) {
+					String id = element.getAttribute("id"); //$NON-NLS-1$
+					if (id != null) {
+						elements.put(id, element);
+						IConsoleActionFactory factory = null;
+						try {
+							factory = (IConsoleActionFactory) element.createExecutableExtension("actionFactory");
+						} catch (CoreException e) {
+							Activator.log(e);
+						}
+						if (factory != null) {
+							String connectionType = element.getAttribute("connectionType");
+							if (connectionType != null) {
+								List<String> actionList = actions.get(connectionType);
+								if (actionList == null) {
+									actionList = new ArrayList<>();
+								}
+								actionList.add(id);
+								actions.put(connectionType, actionList);
+								factories.put(id, factory);
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java
index c426ecf..4e10ee6 100644
--- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/TerminalConsolePage.java
@@ -11,7 +11,9 @@
 package org.eclipse.remote.internal.console;
 
 import java.io.UnsupportedEncodingException;
+import java.util.List;
 
+import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -20,6 +22,9 @@
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.dialogs.ErrorDialog;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.remote.console.actions.ConsoleAction;
+import org.eclipse.remote.console.actions.IConsoleActionFactory;
+import org.eclipse.remote.core.IRemoteConnection;
 import org.eclipse.remote.internal.console.actions.ConsoleActionConnect;
 import org.eclipse.remote.internal.console.actions.ConsoleActionDisconnect;
 import org.eclipse.remote.internal.console.actions.ConsoleActionScrollLock;
@@ -40,9 +45,9 @@
 import org.eclipse.ui.part.Page;
 import org.eclipse.ui.progress.UIJob;
 
-@SuppressWarnings("restriction")
-public class TerminalConsolePage extends Page {
+public class TerminalConsolePage extends Page implements IAdaptable {
 	public static final String TOOLBAR_GROUP_ID = "org.eclipse.remote.internal.terminal.console.Toolbar"; //$NON-NLS-1$
+	public static final String CONTRIBUTIONS_GROUP_ID = "org.eclipse.remote.internal.terminal.console.Toolbar.contributions"; //$NON-NLS-1$
 
 	private final ConsoleActionConnect connectAction;
 	private final ConsoleActionDisconnect disconnectAction;
@@ -89,10 +94,29 @@
 		super.init(pageSite);
 		IToolBarManager toolBarManager = pageSite.getActionBars().getToolBarManager();
 		toolBarManager.insertBefore(IConsoleConstants.OUTPUT_GROUP, new GroupMarker(TOOLBAR_GROUP_ID));
+
 		toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, connectAction);
 		toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, disconnectAction);
 		toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, new ConsoleActionScrollLock(this));
 		toolBarManager.appendToGroup(TOOLBAR_GROUP_ID, new CloseConsoleAction(terminalConsole));
+		
+		toolBarManager.insertAfter(TOOLBAR_GROUP_ID, new GroupMarker(CONTRIBUTIONS_GROUP_ID));
+		
+		addToolbarContributions(toolBarManager);
+	}
+
+	private void addToolbarContributions(IToolBarManager toolBarManager) {
+		String connectionType = terminalConsole.getConnection().getConnectionType().getId();
+		List<String> actions = TerminalConsoleExtensionManager.getInstance().getActionsForType(connectionType);
+		for (String id : actions) {
+			IConsoleActionFactory factory = TerminalConsoleExtensionManager.getInstance().getFactory(id);
+			if (factory != null) {
+				ConsoleAction action = factory.createAction(id, connectionType, this);
+				if (action != null) {
+					toolBarManager.appendToGroup(CONTRIBUTIONS_GROUP_ID, action);
+				}
+			}
+		}
 	}
 
 	@Override
@@ -175,4 +199,22 @@
 			return Status.OK_STATUS;
 		}
 	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public <T> T getAdapter(Class<T> adapter) {
+		if (adapter.equals(IRemoteConnection.class)) {
+			return (T) terminalConsole.getConnection();
+		}
+		if (adapter.equals(TerminalConsole.class)) {
+			return (T) terminalConsole;
+		}
+		if (adapter.equals(TerminalConsolePage.class)) {
+			return (T) this;
+		}
+		return null;
+	}
 }
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java
index e3c97bf..a830e80 100644
--- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionConnect.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.remote.internal.console.actions;
 
+import org.eclipse.remote.console.actions.ConsoleAction;
 import org.eclipse.remote.internal.console.ImageConsts;
 import org.eclipse.remote.internal.console.TerminalConsole;
 
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java
index b567063..3bece3b 100644
--- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionDisconnect.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.remote.internal.console.actions;
 
+import org.eclipse.remote.console.actions.ConsoleAction;
 import org.eclipse.remote.internal.console.ImageConsts;
 import org.eclipse.remote.internal.console.TerminalConsole;
 
diff --git a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java
index 28c7e4a..19c4596 100644
--- a/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java
+++ b/bundles/org.eclipse.remote.console/src/org/eclipse/remote/internal/console/actions/ConsoleActionScrollLock.java
@@ -11,6 +11,7 @@
 package org.eclipse.remote.internal.console.actions;
 
 import org.eclipse.jface.action.IAction;
+import org.eclipse.remote.console.actions.ConsoleAction;
 import org.eclipse.remote.internal.console.ImageConsts;
 import org.eclipse.remote.internal.console.TerminalConsolePage;
 
diff --git a/features/org.eclipse.remote.console-feature/feature.xml b/features/org.eclipse.remote.console-feature/feature.xml
index 14ed391..49d35e7 100644
--- a/features/org.eclipse.remote.console-feature/feature.xml
+++ b/features/org.eclipse.remote.console-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.remote.console"
       label="%featureName"
-      version="2.0.2.qualifier"
+      version="2.1.0.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="0.0.0">
diff --git a/features/org.eclipse.remote.console-feature/pom.xml b/features/org.eclipse.remote.console-feature/pom.xml
index df3490c..b472f1d 100644
--- a/features/org.eclipse.remote.console-feature/pom.xml
+++ b/features/org.eclipse.remote.console-feature/pom.xml
@@ -12,7 +12,7 @@
 
   <groupId>org.eclipse.remote.features</groupId>
   <artifactId>org.eclipse.remote.console</artifactId>
-  <version>2.0.2-SNAPSHOT</version>
+  <version>2.1.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 
   <build>
