cleaning up injector initialization
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend
index 4bb3dd2..842c391 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt.example/src/org/eclipse/nebula/widgets/nattable/renderer/swt/example/SWTNatExamplesRunner.xtend
@@ -1,17 +1,11 @@
 package org.eclipse.nebula.widgets.nattable.renderer.swt.example
 
-import com.google.inject.Guice
-import com.google.inject.Injector
 import java.util.HashMap
 import org.eclipse.jface.viewers.TreeSelection
 import org.eclipse.jface.viewers.TreeViewer
-import org.eclipse.nebula.widgets.nattable.core.example.NatExample
 import org.eclipse.nebula.widgets.nattable.core.example.index.NatExamplesIndex
 import org.eclipse.nebula.widgets.nattable.core.example.index.node.NatExampleNode
 import org.eclipse.nebula.widgets.nattable.renderer.swt.SWTNatTable
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.KeyBinding
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.UiBindings
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.UiBindingsImpl
 import org.eclipse.swt.SWT
 import org.eclipse.swt.custom.CTabFolder
 import org.eclipse.swt.custom.CTabItem
@@ -39,7 +33,6 @@
 	val CTabFolder tabFolder
 	
 	val exampleControlMap = new HashMap<NatExampleNode, Control>
-	val examplePathMap = new HashMap<String, NatExample>
 	
 	new(int shellWidth, int shellHeight) {
 		this.shellWidth = shellWidth
@@ -108,7 +101,6 @@
 		// Create example control
 		val exampleControl = new SWTNatTable(tabComposite) => [
 			layoutData = new GridData(GridData::FILL_BOTH)
-			injector = createInjector
 			layer = node.natExample.createLayer
 		]
 		exampleControlMap.put(node, exampleControl)
@@ -135,15 +127,14 @@
 				// Stop
 				node.natExample.stop
 				
-				// Dispose
+				// Dispose associated control
 				val control = exampleControlMap.get(node)
 				if (control != null && !control.disposed) {
 					control.dispose
 				}
 				
-				// Remove from maps
+				// Remove from map
 				exampleControlMap.remove(node)
-				examplePathMap.remove(node)
 			])
 		]
 		
@@ -151,15 +142,4 @@
 		node.natExample.start
 	}
 	
-	def Injector createInjector() {
-		// UI bindings
-		val uiBindings = new UiBindingsImpl
-		uiBindings.keyBindings += new KeyBinding([ event | event.keyCode == Character::valueOf('a') ], [ event | println((event.widget as SWTNatTable).layer) ])
-		
-		// Create injector
-		Guice::createInjector([ binder |
-			binder.bind(typeof(UiBindings)).toInstance(uiBindings)
-		])
-	}
-	
 }
\ No newline at end of file
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
index a40f9fe..6f24abf 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
@@ -1,6 +1,8 @@
 package org.eclipse.nebula.widgets.nattable.renderer.swt
 
+import com.google.inject.Guice
 import com.google.inject.Injector
+import javax.inject.Inject
 import org.eclipse.nebula.widgets.nattable.core.geometry.PixelArea
 import org.eclipse.nebula.widgets.nattable.core.graphics.PainterFactory
 import org.eclipse.nebula.widgets.nattable.core.layer.Layer
@@ -19,7 +21,7 @@
 	static val int DEFAULT_STYLE_OPTIONS = SWT::NO_BACKGROUND.bitwiseOr(SWT::DOUBLE_BUFFERED).bitwiseOr(SWT::NO_REDRAW_RESIZE)
 	
 	extension Injector
-	extension PainterFactory
+	@Inject extension PainterFactory
 
 	Layer layer
 
@@ -29,14 +31,14 @@
 
 	new(Composite parent, int style) {
 		super(parent, style)
+		
+		_injector = Guice::createInjector.createChildInjector([ binder |
+			binder.bind(typeof(PainterFactory)).toInstance(new SWTPainterFactory)
+		])
+		this.injectMembers
 	}
 	
-	def void setInjector(Injector baseInjector) {
-		_painterFactory = baseInjector.getInstance(typeof(SWTPainterFactory))
-		_injector = baseInjector.createChildInjector([ binder |
-			binder.bind(typeof(PainterFactory)).toInstance(_painterFactory)
-		])
-	}
+	def getInjector() { _injector }
 	
 	def Layer getLayer() { layer }
 	
@@ -44,15 +46,12 @@
 		this.layer = layer
 		
 		// Event listener
-		
 		layer.addEventListener([ event | redraw ])
 		
 		// Paint listener
-		
 		addPaintListener([ event | paintLayer(event.gc) ])
 		
 		// Init mode switcher
-		
 		val modeSwitcher = new ModeSwitcher(this)
 		modeSwitcher.registerMode(Mode::NORMAL, getInstance(typeof(NormalMode)))
 		modeSwitcher.switchToMode(Mode::NORMAL)
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindingsImpl.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/SWTUIBindings.xtend
similarity index 78%
rename from org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindingsImpl.xtend
rename to org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/SWTUIBindings.xtend
index 5881606..201bcaf 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindingsImpl.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/SWTUIBindings.xtend
@@ -1,10 +1,12 @@
 package org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding
 
 import java.util.LinkedList
+import javax.inject.Singleton
 import org.eclipse.swt.events.KeyEvent
 import org.eclipse.swt.events.MouseEvent
 
-class UiBindingsImpl implements UiBindings {
+@Singleton
+class SWTUIBindings {
 	
 	val keyBindings = new LinkedList<KeyBinding>
 	val mouseMoveBindings = new LinkedList<MouseBinding>
@@ -21,27 +23,27 @@
 	
 	// Lookup /////////////////////////////////////////////////////////////////
 	
-	override getKeyEventAction(KeyEvent event) {
+	def getKeyEventAction(KeyEvent event) {
 		keyBindings.findFirst([ matcher.matches(event) ])?.action
 	}
 	
-	override getMouseMoveAction(MouseEvent event) {
+	def getMouseMoveAction(MouseEvent event) {
 		mouseMoveBindings.findFirst([ matcher.matches(event) ])?.action
 	}
 	
-	override getMouseDownAction(MouseEvent event) {
+	def getMouseDownAction(MouseEvent event) {
 		mouseDownBindings.findFirst([ matcher.matches(event) ])?.action
 	}
 	
-	override getSingleClickAction(MouseEvent event) {
+	def getSingleClickAction(MouseEvent event) {
 		singleClickBindings.findFirst([ matcher.matches(event) ])?.action
 	}
 	
-	override getDoubleClickAction(MouseEvent event) {
+	def getDoubleClickAction(MouseEvent event) {
 		doubleClickBindings.findFirst([ matcher.matches(event) ])?.action
 	}
 	
-	override getDragAction(MouseEvent event) {
+	def getDragAction(MouseEvent event) {
 		dragBindings.findFirst([ matcher.matches(event) ])?.action
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindings.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindings.xtend
deleted file mode 100644
index a4de09c..0000000
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/binding/UiBindings.xtend
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding
-
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.action.DragAction
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.action.KeyAction
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.action.MouseAction
-import org.eclipse.swt.events.KeyEvent
-import org.eclipse.swt.events.MouseEvent
-
-interface UiBindings {
-	
-	def KeyAction getKeyEventAction(KeyEvent event)
-	
-	def MouseAction getMouseDownAction(MouseEvent event)
-	def MouseAction getMouseMoveAction(MouseEvent event)
-	def DragAction getDragAction(MouseEvent event)
-	
-	def MouseAction getSingleClickAction(MouseEvent event)
-	def MouseAction getDoubleClickAction(MouseEvent event)
-	
-}
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend
index 4108669..7dafcba 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/event/mode/NormalMode.xtend
@@ -1,14 +1,14 @@
 package org.eclipse.nebula.widgets.nattable.renderer.swt.event.mode
 
 import com.google.inject.Inject
-import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.UiBindings
+import org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding.SWTUIBindings
 import org.eclipse.swt.events.KeyEvent
 import org.eclipse.swt.events.MouseEvent
 import org.eclipse.swt.widgets.Control
 
 class NormalMode extends AbstractMode {
 
-	@Inject UiBindings uiBindings
+	@Inject SWTUIBindings uiBindings
 
 	// Event handling /////////////////////////////////////////////////////////