add default addons and handlers
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/.settings/ca.ecliptical.pde.ds.prefs b/bundles/code/org.eclipse.fx.code.editor.e4/.settings/ca.ecliptical.pde.ds.prefs
new file mode 100644
index 0000000..963a307
--- /dev/null
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/.settings/ca.ecliptical.pde.ds.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+enabled=true
+path=OSGI-INF/services
+validationErrorLevel=error
+validationErrorLevel.missingImplicitUnbindMethod=error
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/META-INF/MANIFEST.MF b/bundles/code/org.eclipse.fx.code.editor.e4/META-INF/MANIFEST.MF
index 1750138..24d783e 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/META-INF/MANIFEST.MF
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/META-INF/MANIFEST.MF
@@ -11,11 +11,18 @@
  org.eclipse.e4.ui.model.workbench,
  org.eclipse.fx.text.ui;bundle-version="1.0.0",
  org.eclipse.fx.core.di.context,
- org.eclipse.fx.core;bundle-version="2.1.0"
-Import-Package: org.osgi.service.component.annotations
-Service-Component: OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentContextFunction.xml,
- OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentPartitionerContextFunction.xml,
- OSGI-INF/services/org.eclipse.fx.code.editor.e4.InputContextFunction.xml,
- OSGI-INF/services/org.eclipse.fx.code.editor.e4.AnnotationModelContextFunction.xml
+ org.eclipse.fx.core;bundle-version="2.1.0",
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.core.services,
+ org.eclipse.osgi.services,
+ org.eclipse.e4.ui.di
+Import-Package: javax.inject;version="1.0.0",
+ org.osgi.service.component.annotations
+Service-Component: OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentPartitionerContextFunction.xml,
+ OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.AnnotationModelContextFunction.xml,
+ OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentContextFunction.xml,
+ OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.InputContextFunction.xml
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.fx.code.editor.e4
+Export-Package: org.eclipse.fx.code.editor.e4,
+ org.eclipse.fx.code.editor.e4.addons,
+ org.eclipse.fx.code.editor.e4.handlers
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.AnnotationModelContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.AnnotationModelContextFunction.xml
similarity index 75%
rename from bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.AnnotationModelContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.AnnotationModelContextFunction.xml
index 060d00a..414d7cf 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.AnnotationModelContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.AnnotationModelContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.AnnotationModelContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.e4.AnnotationModelContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.internal.AnnotationModelContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.e4.internal.AnnotationModelContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentContextFunction.xml
similarity index 76%
rename from bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentContextFunction.xml
index 66454d4..290cfb4 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.DocumentContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.e4.DocumentContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.internal.DocumentContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.e4.internal.DocumentContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentPartitionerContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentPartitionerContextFunction.xml
similarity index 74%
rename from bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentPartitionerContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentPartitionerContextFunction.xml
index be36503..d80200a 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.DocumentPartitionerContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.DocumentPartitionerContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.DocumentPartitionerContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.e4.DocumentPartitionerContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.internal.DocumentPartitionerContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.e4.internal.DocumentPartitionerContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.InputContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.InputContextFunction.xml
similarity index 76%
rename from bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.InputContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.InputContextFunction.xml
index c6798e1..a6c2b54 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.InputContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/OSGI-INF/services/org.eclipse.fx.code.editor.e4.internal.InputContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.InputContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.e4.InputContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.e4.internal.InputContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.e4.internal.InputContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/addons/DirtyStateTrackingAddon.java b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/addons/DirtyStateTrackingAddon.java
new file mode 100644
index 0000000..d311f22
--- /dev/null
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/addons/DirtyStateTrackingAddon.java
@@ -0,0 +1,69 @@
+package org.eclipse.fx.code.editor.e4.addons;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.MContext;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.UIEvents;
+import org.eclipse.e4.ui.workbench.UIEvents.EventTags;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.fx.code.editor.Constants;
+import org.osgi.service.event.Event;
+
+public class DirtyStateTrackingAddon {
+	private EModelService modelService;
+
+	private MApplication application;
+
+	private final IEventBroker broker;
+
+	@Inject
+	public DirtyStateTrackingAddon(IEventBroker broker, EModelService modelService, MApplication application) {
+		this.broker = broker;
+		this.modelService = modelService;
+		this.application = application;
+	}
+
+	@PostConstruct
+	void init() {
+		broker.subscribe(Constants.EDITOR_DOCUMENT_MODIFIED, this::handleDocumentModified);
+		broker.subscribe(Constants.EDITOR_DOCUMENT_SAVED, this::handleDocumentSaved);
+		broker.subscribe(UIEvents.Dirtyable.TOPIC_DIRTY, this::handlePartDirty);
+	}
+
+	void handlePartDirty(Event event) {
+		Object element = event.getProperty(EventTags.ELEMENT);
+		if( element instanceof MContext ) {
+			((MContext) element).getContext().set(Constants.EDITOR_DIRTY_FLAG_KEY, event.getProperty(EventTags.NEW_VALUE));
+			broker.send(UIEvents.REQUEST_ENABLEMENT_UPDATE_TOPIC, UIEvents.ALL_ELEMENT_ID);
+		}
+	}
+
+	void handleDocumentSaved(Event event) {
+		Object theEditor = event.getProperty(IEventBroker.DATA);
+		modelService.findElements(application, MPart.class, EModelService.ANYWHERE, (e) -> {
+			if( e instanceof MPart) {
+				return ((MPart) e).getObject() == theEditor;
+			}
+			return false;
+		}).forEach((e) -> {
+			((MPart)e).setDirty(false);
+		});
+	}
+
+	void handleDocumentModified(Event event) {
+		Object theEditor = event.getProperty(IEventBroker.DATA);
+		modelService.findElements(application, MPart.class, EModelService.ANYWHERE, (e) -> {
+			if( e instanceof MPart) {
+				return ((MPart) e).getObject() == theEditor;
+			}
+			return false;
+		}).forEach((e) -> {
+			((MPart)e).setDirty(true);
+		});
+	}
+
+}
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/handlers/SaveFile.java b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/handlers/SaveFile.java
new file mode 100644
index 0000000..5ab025c
--- /dev/null
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/handlers/SaveFile.java
@@ -0,0 +1,27 @@
+package org.eclipse.fx.code.editor.e4.handlers;
+
+import javax.inject.Named;
+
+import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.di.Persist;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.fx.code.editor.Constants;
+
+//FIXME Should we remove the need for ui.di????
+public class SaveFile {
+	@CanExecute
+	public boolean canSave(@Named(Constants.EDITOR_DIRTY_FLAG_KEY) @Optional Boolean dirtyFlag) {
+		return Boolean.TRUE.equals(dirtyFlag);
+	}
+
+	@Execute
+	public void save(MPart part, IEclipseContext context) {
+		if( part.isDirty() ) {
+			ContextInjectionFactory.invoke(part.getObject(), Persist.class,context);
+		}
+	}
+}
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/AnnotationModelContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/AnnotationModelContextFunction.java
similarity index 91%
rename from bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/AnnotationModelContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/AnnotationModelContextFunction.java
index a3c97a5..8c0605c 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/AnnotationModelContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/AnnotationModelContextFunction.java
@@ -1,8 +1,9 @@
-package org.eclipse.fx.code.editor.e4;
+package org.eclipse.fx.code.editor.e4.internal;
 
 import java.util.Map;
 
 import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.fx.code.editor.e4.InputBasedContextFunction;
 import org.eclipse.fx.code.editor.services.AnnotationModelTypeProvider;
 import org.eclipse.jface.text.source.IAnnotationModel;
 import org.osgi.service.component.annotations.Component;
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/DocumentContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/DocumentContextFunction.java
similarity index 90%
rename from bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/DocumentContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/DocumentContextFunction.java
index 8cf0a87..f7320b2 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/DocumentContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/DocumentContextFunction.java
@@ -1,8 +1,9 @@
-package org.eclipse.fx.code.editor.e4;
+package org.eclipse.fx.code.editor.e4.internal;
 
 import java.util.Map;
 
 import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.fx.code.editor.e4.InputBasedContextFunction;
 import org.eclipse.fx.code.editor.services.DocumentTypeProvider;
 import org.eclipse.jface.text.IDocument;
 import org.osgi.service.component.annotations.Component;
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/DocumentPartitionerContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/DocumentPartitionerContextFunction.java
similarity index 91%
rename from bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/DocumentPartitionerContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/DocumentPartitionerContextFunction.java
index e430afe..9a026ab 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/DocumentPartitionerContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/DocumentPartitionerContextFunction.java
@@ -1,8 +1,9 @@
-package org.eclipse.fx.code.editor.e4;
+package org.eclipse.fx.code.editor.e4.internal;
 
 import java.util.Map;
 
 import org.eclipse.e4.core.contexts.IContextFunction;
+import org.eclipse.fx.code.editor.e4.InputBasedContextFunction;
 import org.eclipse.fx.code.editor.services.DocumentPartitionerTypeProvider;
 import org.eclipse.jface.text.IDocumentPartitioner;
 import org.osgi.service.component.annotations.Component;
diff --git a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/InputContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/InputContextFunction.java
similarity index 96%
rename from bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/InputContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/InputContextFunction.java
index 0e1ee2d..bb5d568 100644
--- a/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/InputContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.e4/src/org/eclipse/fx/code/editor/e4/internal/InputContextFunction.java
@@ -1,4 +1,4 @@
-package org.eclipse.fx.code.editor.e4;
+package org.eclipse.fx.code.editor.e4.internal;
 
 import org.eclipse.e4.core.contexts.IContextFunction;
 import org.eclipse.e4.core.contexts.IEclipseContext;
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF b/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF
index 8086e1e..d82ad66 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/META-INF/MANIFEST.MF
@@ -18,8 +18,8 @@
  org.eclipse.fx.core.di
 Import-Package: javax.inject,
  org.osgi.service.component.annotations
-Service-Component: OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.PresentationReconcilerContextFunction.xml,
- OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.SourceViewerConfigurationContextFunction.xml,
- OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.ProposalComputerTypeProviderContextFunction.xml,
- OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.AnnotationPresenterContextFunction.xml,
- OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.TextEditorOpenerContextFunction.xml
+Service-Component: OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.SourceViewerConfigurationContextFunction.xml,
+ OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ProposalComputerTypeProviderContextFunction.xml,
+ OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.TextEditorOpenerContextFunction.xml,
+ OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.PresentationReconcilerContextFunction.xml,
+ OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.AnnotationPresenterContextFunction.xml
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.AnnotationPresenterContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.AnnotationPresenterContextFunction.xml
similarity index 74%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.AnnotationPresenterContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.AnnotationPresenterContextFunction.xml
index 9c5c4e8..581d16f 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.AnnotationPresenterContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.AnnotationPresenterContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.AnnotationPresenterContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.fx.e4.AnnotationPresenterContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.internal.AnnotationPresenterContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.fx.e4.internal.AnnotationPresenterContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.PresentationReconcilerContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.PresentationReconcilerContextFunction.xml
similarity index 74%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.PresentationReconcilerContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.PresentationReconcilerContextFunction.xml
index bd854ee..d782610 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.PresentationReconcilerContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.PresentationReconcilerContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.PresentationReconcilerContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.fx.e4.PresentationReconcilerContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.internal.PresentationReconcilerContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.fx.e4.internal.PresentationReconcilerContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.ProposalComputerTypeProviderContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ProposalComputerTypeProviderContextFunction.xml
similarity index 72%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.ProposalComputerTypeProviderContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ProposalComputerTypeProviderContextFunction.xml
index 10a4b77..44e18bc 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.ProposalComputerTypeProviderContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.ProposalComputerTypeProviderContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.ProposalComputerTypeProviderContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.fx.e4.ProposalComputerTypeProviderContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.internal.ProposalComputerTypeProviderContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.fx.e4.internal.ProposalComputerTypeProviderContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.SourceViewerConfigurationContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.SourceViewerConfigurationContextFunction.xml
similarity index 73%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.SourceViewerConfigurationContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.SourceViewerConfigurationContextFunction.xml
index f9a1a0d..26feb75 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.SourceViewerConfigurationContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.SourceViewerConfigurationContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.SourceViewerConfigurationContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.fx.e4.SourceViewerConfigurationContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.2.0" name="org.eclipse.fx.code.editor.fx.e4.internal.SourceViewerConfigurationContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.fx.e4.internal.SourceViewerConfigurationContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.TextEditorOpenerContextFunction.xml b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.TextEditorOpenerContextFunction.xml
similarity index 63%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.TextEditorOpenerContextFunction.xml
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.TextEditorOpenerContextFunction.xml
index 8fdd596..249a859 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.TextEditorOpenerContextFunction.xml
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/OSGI-INF/services/org.eclipse.fx.code.editor.fx.e4.internal.TextEditorOpenerContextFunction.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.fx.code.editor.fx.e4.TextEditorOpenerContextFunction">
-   <implementation class="org.eclipse.fx.code.editor.fx.e4.TextEditorOpenerContextFunction"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.fx.code.editor.fx.e4.internal.TextEditorOpenerContextFunction">
+   <implementation class="org.eclipse.fx.code.editor.fx.e4.internal.TextEditorOpenerContextFunction"/>
    <service>
       <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
    </service>
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/AnnotationPresenterContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/AnnotationPresenterContextFunction.java
similarity index 95%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/AnnotationPresenterContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/AnnotationPresenterContextFunction.java
index c2d888e..5112457 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/AnnotationPresenterContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/AnnotationPresenterContextFunction.java
@@ -1,4 +1,4 @@
-package org.eclipse.fx.code.editor.fx.e4;
+package org.eclipse.fx.code.editor.fx.e4.internal;
 
 import java.util.Map;
 
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/PresentationReconcilerContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/PresentationReconcilerContextFunction.java
similarity index 95%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/PresentationReconcilerContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/PresentationReconcilerContextFunction.java
index e0dbc60..da39e50 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/PresentationReconcilerContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/PresentationReconcilerContextFunction.java
@@ -1,4 +1,4 @@
-package org.eclipse.fx.code.editor.fx.e4;
+package org.eclipse.fx.code.editor.fx.e4.internal;
 
 import java.util.Map;
 
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/ProposalComputerTypeProviderContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/ProposalComputerTypeProviderContextFunction.java
similarity index 95%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/ProposalComputerTypeProviderContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/ProposalComputerTypeProviderContextFunction.java
index 41d4d80..0a2130b 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/ProposalComputerTypeProviderContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/ProposalComputerTypeProviderContextFunction.java
@@ -1,4 +1,4 @@
-package org.eclipse.fx.code.editor.fx.e4;
+package org.eclipse.fx.code.editor.fx.e4.internal;
 
 import java.util.Map;
 
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/SourceViewerConfigurationContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/SourceViewerConfigurationContextFunction.java
similarity index 95%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/SourceViewerConfigurationContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/SourceViewerConfigurationContextFunction.java
index 3e9878a..55483bf 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/SourceViewerConfigurationContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/SourceViewerConfigurationContextFunction.java
@@ -1,4 +1,4 @@
-package org.eclipse.fx.code.editor.fx.e4;
+package org.eclipse.fx.code.editor.fx.e4.internal;
 
 import java.util.Map;
 
diff --git a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/TextEditorOpenerContextFunction.java b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/TextEditorOpenerContextFunction.java
similarity index 98%
rename from bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/TextEditorOpenerContextFunction.java
rename to bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/TextEditorOpenerContextFunction.java
index 52f7b1f..e83320c 100644
--- a/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/TextEditorOpenerContextFunction.java
+++ b/bundles/code/org.eclipse.fx.code.editor.fx.e4/src/org/eclipse/fx/code/editor/fx/e4/internal/TextEditorOpenerContextFunction.java
@@ -1,4 +1,4 @@
-package org.eclipse.fx.code.editor.fx.e4;
+package org.eclipse.fx.code.editor.fx.e4.internal;
 
 import java.util.Collections;
 import java.util.List;