diff --git a/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend b/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend
index eb38202..9e71fb2 100644
--- a/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend
+++ b/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend
@@ -11,22 +11,33 @@
 import javax.inject.Inject
 import org.eclipse.xtext.common.types.access.IJvmTypeProvider
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
+import javax.xml.parsers.SAXParserFactory
 
 class FXMLSaxHandler extends DefaultHandler {
-	Model model;
+	public Model model;
 
 	Stack<Object> stack = new Stack;
 	
 //	@Inject
 //	private IJvmTypeProvider.Factory jdtTypeProviderFactory;
 
-	private IJvmTypeProvider jdtTypeProvider;
+//	private IJvmTypeProvider jdtTypeProvider;
+
+	private String packageName;
+
+	new(String packageName)
+	{
+		this.packageName = packageName;
+	}
 
 	override startDocument() throws SAXException {
 //		jdtTypeProvider = jdtTypeProviderFactory.findOrCreateTypeProvider(new ResourceSetImpl)
 		model = FXGraphFactory.eINSTANCE.createModel
-		val componentDef = FXGraphFactory.eINSTANCE.createComponentDefinition
+		val pack = FXGraphFactory.eINSTANCE.createPackageDeclaration
+		pack.setName(packageName)
+		model.setPackage(pack)
 		
+		val componentDef = FXGraphFactory.eINSTANCE.createComponentDefinition
 		model.componentDef = componentDef
 	}
 	
@@ -50,6 +61,8 @@
 			// A property
 			val e = stack.peek as Element
 			val prop = FXGraphFactory.eINSTANCE.createProperty
+			val vProp = FXGraphFactory.eINSTANCE.createSimpleValueProperty
+			
 			e.properties.add(prop)
 			
 			stack.push(prop)
@@ -62,6 +75,10 @@
 			jvmType.simpleName = localName
 			t.type = jvmType
 			e.type = t
+			
+			if( model.componentDef.rootNode == null ) {
+				model.componentDef.rootNode = e
+			}
 		
 			stack.push(e)
 		}
@@ -70,9 +87,4 @@
 	override endElement(String uri, String localName, String qName) throws SAXException {
 		stack.pop
 	}
-	
-	def static void main(String[] args) {
-		val h = new FXMLSaxHandler()
-		 
-	}
 }
\ No newline at end of file
diff --git a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/PrimitiveType.xtend b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/PrimitiveType.xtend
new file mode 100644
index 0000000..90e3cd9
--- /dev/null
+++ b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/PrimitiveType.xtend
@@ -0,0 +1,5 @@
+package org.eclipse.fx.ide.fxml.compiler
+
+enum PrimitiveType {
+	
+}
\ No newline at end of file
diff --git a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend
index a8d403f..a83ad4e 100644
--- a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend
+++ b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend
@@ -27,4 +27,6 @@
 		
 		return p.value;
 	}
+	
+//	def static 
 }
\ No newline at end of file
diff --git a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/TestLoading.xtend b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/TestLoading.xtend
new file mode 100644
index 0000000..4e17fbb
--- /dev/null
+++ b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/TestLoading.xtend
@@ -0,0 +1,20 @@
+package org.eclipse.fx.ide.fxml.compiler
+
+import java.io.File
+import javax.xml.parsers.SAXParserFactory
+import org.eclipse.fx.ide.fxgraph.converter.FXMLSaxHandler
+import org.eclipse.fx.ide.fxgraph.converter.FXGraphConverter
+
+class TestLoading {
+	def static void main(String[] args) {
+		val f = SAXParserFactory.newInstance
+		f.setNamespaceAware(true);
+		val p = f.newSAXParser
+		val h = new FXMLSaxHandler("test")
+		
+		p.parse(new File("/Users/tomschindl/git/efxclipse/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/sample-src/sample/Sample.fxml"), h)
+		val c = new FXGraphConverter
+		c.generate(h.model); 
+	}
+	
+}
\ No newline at end of file
