diff --git a/org.aspectj-feature/feature.xml b/org.aspectj-feature/feature.xml
index 5d827c5..cea3385 100644
--- a/org.aspectj-feature/feature.xml
+++ b/org.aspectj-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.aspectj"
       label="%featureName"
-      version="1.8.13.qualifier"
+      version="1.9.0.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.aspectj">
 
diff --git a/org.aspectj-feature/pom.xml b/org.aspectj-feature/pom.xml
index 9aba686..f0a270b 100644
--- a/org.aspectj-feature/pom.xml
+++ b/org.aspectj-feature/pom.xml
@@ -9,7 +9,7 @@
 	</parent>
 
 	<groupId>org.aspectj.ajde</groupId>
-	<version>1.8.13-SNAPSHOT</version>
+	<version>1.9.0-SNAPSHOT</version>
 	<artifactId>org.aspectj</artifactId>
 	<packaging>eclipse-feature</packaging>
 
diff --git a/org.aspectj.ajde/META-INF/MANIFEST.MF b/org.aspectj.ajde/META-INF/MANIFEST.MF
index 263204a..8c7ce5f 100644
--- a/org.aspectj.ajde/META-INF/MANIFEST.MF
+++ b/org.aspectj.ajde/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: AspectJ
 Bundle-SymbolicName: org.aspectj.ajde; singleton:=true
-Bundle-Version: 1.8.13.qualifier
+Bundle-Version: 1.9.0.qualifier
 Bundle-Vendor: Eclipse AspectJ Development Tools
 Export-Package: org.aspectj.ajde.core,
  org.aspectj.ajde.core.internal,
@@ -65,7 +65,7 @@
  org.eclipse.core.resources,
  org.eclipse.core.runtime,
  org.eclipse.text,
- org.aspectj.weaver;bundle-version="1.8.13";visibility:=reexport
+ org.aspectj.weaver;bundle-version="1.9.0";visibility:=reexport
 Bundle-ActivationPolicy: lazy
 Eclipse-BundleShape: jar
 Bundle-ClassPath: .
diff --git a/org.aspectj.ajde/pom.xml b/org.aspectj.ajde/pom.xml
index 79d4f50..6429e46 100644
--- a/org.aspectj.ajde/pom.xml
+++ b/org.aspectj.ajde/pom.xml
@@ -10,7 +10,7 @@
 
 	<groupId>org.aspectj.ajde</groupId>
 	<artifactId>org.aspectj.ajde</artifactId>
-	<version>1.8.13-SNAPSHOT</version>
+	<version>1.9.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 
 	<build>
diff --git a/org.aspectj.runtime/META-INF/MANIFEST.MF b/org.aspectj.runtime/META-INF/MANIFEST.MF
index 50d5d47..5fc7926 100644
--- a/org.aspectj.runtime/META-INF/MANIFEST.MF
+++ b/org.aspectj.runtime/META-INF/MANIFEST.MF
@@ -2,18 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: AspectJ Runtime
 Bundle-SymbolicName: org.aspectj.runtime
-Bundle-Version: 1.8.13.qualifier
+Bundle-Version: 1.9.0.qualifier
 Bundle-Vendor: Eclipse AspectJ Development Tools
-Export-Package: org.aspectj.internal.lang.annotation;version="1.8.13",
- org.aspectj.internal.lang.reflect;version="1.8.13",
- org.aspectj.lang;version="1.8.13",
- org.aspectj.lang.annotation;version="1.8.13",
- org.aspectj.lang.internal.lang;version="1.8.13",
- org.aspectj.lang.reflect;version="1.8.13",
- org.aspectj.runtime;version="1.8.13",
- org.aspectj.runtime.internal;version="1.8.13",
- org.aspectj.runtime.internal.cflowstack;version="1.8.13",
- org.aspectj.runtime.reflect;version="1.8.13"
+Export-Package: org.aspectj.internal.lang.annotation;version="1.9.0",
+ org.aspectj.internal.lang.reflect;version="1.9.0",
+ org.aspectj.lang;version="1.9.0",
+ org.aspectj.lang.annotation;version="1.9.0",
+ org.aspectj.lang.internal.lang;version="1.9.0",
+ org.aspectj.lang.reflect;version="1.9.0",
+ org.aspectj.runtime;version="1.9.0",
+ org.aspectj.runtime.internal;version="1.9.0",
+ org.aspectj.runtime.internal.cflowstack;version="1.9.0",
+ org.aspectj.runtime.reflect;version="1.9.0"
 Eclipse-BundleShape: jar
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ClassPath: .
diff --git a/org.aspectj.runtime/pom.xml b/org.aspectj.runtime/pom.xml
index 8605d72..aea7ba5 100644
--- a/org.aspectj.runtime/pom.xml
+++ b/org.aspectj.runtime/pom.xml
@@ -10,7 +10,7 @@
 
 	<groupId>org.aspectj.ajde</groupId>
 	<artifactId>org.aspectj.runtime</artifactId>
-	<version>1.8.13-SNAPSHOT</version>
+	<version>1.9.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 
 	<build>
diff --git a/org.aspectj.weaver/META-INF/MANIFEST.MF b/org.aspectj.weaver/META-INF/MANIFEST.MF
index 0676529..6000cc3 100644
--- a/org.aspectj.weaver/META-INF/MANIFEST.MF
+++ b/org.aspectj.weaver/META-INF/MANIFEST.MF
@@ -2,33 +2,33 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: AspectJ Weaver
 Bundle-SymbolicName: org.aspectj.weaver
-Bundle-Version: 1.8.13.qualifier
+Bundle-Version: 1.9.0.qualifier
 Bundle-Vendor: Eclipse AspectJ Development Tools
-Require-Bundle: org.aspectj.runtime;bundle-version="1.8.13";visibility:=reexport
-Export-Package: org.aspectj.apache.bcel;version="1.8.13",
- org.aspectj.apache.bcel.classfile;version="1.8.13",
- org.aspectj.apache.bcel.classfile.annotation;version="1.8.13",
- org.aspectj.apache.bcel.generic;version="1.8.13",
- org.aspectj.apache.bcel.util;version="1.8.13",
- org.aspectj.asm;version="1.8.13",
- org.aspectj.asm.internal;version="1.8.13",
- org.aspectj.bridge;version="1.8.13",
- org.aspectj.bridge.context;version="1.8.13",
- org.aspectj.util;version="1.8.13",
- org.aspectj.weaver;version="1.8.13",
- org.aspectj.weaver.ast;version="1.8.13",
- org.aspectj.weaver.bcel;version="1.8.13",
- org.aspectj.weaver.internal.tools;version="1.8.13",
- org.aspectj.weaver.loadtime;version="1.8.13",
- org.aspectj.weaver.loadtime.definition;version="1.8.13",
- org.aspectj.weaver.model;version="1.8.13",
- org.aspectj.weaver.patterns;version="1.8.13",
- org.aspectj.weaver.reflect;version="1.8.13",
- org.aspectj.weaver.tools;version="1.8.13"
+Require-Bundle: org.aspectj.runtime;bundle-version="1.9.0";visibility:=reexport
+Export-Package: org.aspectj.apache.bcel;version="1.9.0",
+ org.aspectj.apache.bcel.classfile;version="1.9.0",
+ org.aspectj.apache.bcel.classfile.annotation;version="1.9.0",
+ org.aspectj.apache.bcel.generic;version="1.9.0",
+ org.aspectj.apache.bcel.util;version="1.9.0",
+ org.aspectj.asm;version="1.9.0",
+ org.aspectj.asm.internal;version="1.9.0",
+ org.aspectj.bridge;version="1.9.0",
+ org.aspectj.bridge.context;version="1.9.0",
+ org.aspectj.util;version="1.9.0",
+ org.aspectj.weaver;version="1.9.0",
+ org.aspectj.weaver.ast;version="1.9.0",
+ org.aspectj.weaver.bcel;version="1.9.0",
+ org.aspectj.weaver.internal.tools;version="1.9.0",
+ org.aspectj.weaver.loadtime;version="1.9.0",
+ org.aspectj.weaver.loadtime.definition;version="1.9.0",
+ org.aspectj.weaver.model;version="1.9.0",
+ org.aspectj.weaver.patterns;version="1.9.0",
+ org.aspectj.weaver.reflect;version="1.9.0",
+ org.aspectj.weaver.tools;version="1.9.0"
 Eclipse-BundleShape: jar
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ClassPath: .
-Implementation-Version: 1.8.13
+Implementation-Version: 1.9.0
 Implementation-Vendor: aspectj.org
 Premain-Class: org.aspectj.weaver.loadtime.Agent
 Can-Redefine-Classes: true
diff --git a/org.aspectj.weaver/pom.xml b/org.aspectj.weaver/pom.xml
index be54023..9395f16 100644
--- a/org.aspectj.weaver/pom.xml
+++ b/org.aspectj.weaver/pom.xml
@@ -10,7 +10,7 @@
 
 	<groupId>org.aspectj.ajde</groupId>
 	<artifactId>org.aspectj.weaver</artifactId>
-	<version>1.8.13-SNAPSHOT</version>
+	<version>1.9.0-SNAPSHOT</version>
 	<packaging>eclipse-plugin</packaging>
 
 	<build>
diff --git a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/internal/core/ajde/CoreCompilerConfiguration.java b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/internal/core/ajde/CoreCompilerConfiguration.java
index 0988aff..ecd1a29 100644
--- a/org.eclipse.ajdt.core/src/org/eclipse/ajdt/internal/core/ajde/CoreCompilerConfiguration.java
+++ b/org.eclipse.ajdt.core/src/org/eclipse/ajdt/internal/core/ajde/CoreCompilerConfiguration.java
@@ -675,9 +675,23 @@
 			}
 		}
 		StringBuilder fcp = new StringBuilder();
-		for (File f: fileList) {
+		for (int i=0;i<fileList.size();i++) {
+			if (i>0) {
+				fcp.append(File.pathSeparatorChar);
+			}
+			File f = fileList.get(i);
 			fcp.append(f.getAbsolutePath());
 		}
 		return fcp.toString();
     }
+
+	public String getModulepath() {
+		// not yet implemented
+		return null;
+	}
+
+	public String getModuleSourcepath() {
+		// not yet implemented
+		return null;
+	}
 }
diff --git a/org.eclipse.ajdt.ui/META-INF/MANIFEST.MF b/org.eclipse.ajdt.ui/META-INF/MANIFEST.MF
index 3c13754..3d679e8 100644
--- a/org.eclipse.ajdt.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.ajdt.ui/META-INF/MANIFEST.MF
@@ -49,7 +49,7 @@
  org.eclipse.jface.text;bundle-version="[3.6.0,4.3.0)",
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.6.0,4.3.0)",
  org.eclipse.ui.editors;bundle-version="[3.6.0,4.3.0)",
- org.aspectj.ajde;bundle-version="[1.6.3,1.9.0)",
+ org.aspectj.ajde;bundle-version="[1.6.3,1.9.9)",
  org.eclipse.search;bundle-version="[3.6.0,4.3.0)",
  org.eclipse.ui;bundle-version="[3.6.0,4.3.0)",
  org.eclipse.jdt.ui;bundle-version="[3.8.0,4.9.0)";visibility:=reexport,
@@ -73,11 +73,11 @@
  org.apache.ant,
  org.eclipse.ltk.core.refactoring;bundle-version="[3.5.100,4.3.0)",
  org.eclipse.ajdt.core;bundle-version="[1.6.4,2.4.0)",
- org.aspectj.runtime;bundle-version="[1.5.3,1.9.0)",
+ org.aspectj.runtime;bundle-version="[1.5.3,1.9.9)",
  org.eclipse.contribution.xref.core;resolution:=optional,
  org.eclipse.contribution.xref.ui;resolution:=optional,
  org.eclipse.help;bundle-version="[3.3.0,4.3.0)",
- org.aspectj.weaver;bundle-version="[1.6.3,1.9.0)",
+ org.aspectj.weaver;bundle-version="[1.6.3,1.9.9)",
  org.eclipse.core.filesystem,
  org.eclipse.ui.navigator;bundle-version="[3.3.0,4.3.0)",
  org.eclipse.contribution.weaving.jdt;bundle-version="2.2.4",
diff --git a/org.eclipse.ajdt.ui/jdt-src/org/eclipse/ajdt/internal/ui/wizards/NewTypeWizardPage.java b/org.eclipse.ajdt.ui/jdt-src/org/eclipse/ajdt/internal/ui/wizards/NewTypeWizardPage.java
index df684f2..4b7f7dc 100644
--- a/org.eclipse.ajdt.ui/jdt-src/org/eclipse/ajdt/internal/ui/wizards/NewTypeWizardPage.java
+++ b/org.eclipse.ajdt.ui/jdt-src/org/eclipse/ajdt/internal/ui/wizards/NewTypeWizardPage.java
@@ -1625,7 +1625,7 @@
 				return status;
 			}
 			String typeDeclaration= "class " + typeNameWithParameters + " {}"; //$NON-NLS-1$//$NON-NLS-2$
-			ASTParser parser= ASTParser.newParser(AST.JLS8);
+			ASTParser parser= ASTParser.newParser(AST.JLS9);
 			parser.setSource(typeDeclaration.toCharArray());
 			parser.setProject(project);
 			CompilationUnit compilationUnit= (CompilationUnit) parser.createAST(null);
@@ -2083,7 +2083,7 @@
 	}	
 	
 	private CompilationUnit createASTForImports(ICompilationUnit cu) {
-		ASTParser parser= ASTParser.newParser(AST.JLS8);
+		ASTParser parser= ASTParser.newParser(AST.JLS9);
 		parser.setSource(cu);
 		parser.setResolveBindings(false);
 		parser.setFocalPosition(0);
@@ -2101,7 +2101,7 @@
 	}
 
 	private void removeUnusedImports(ICompilationUnit cu, Set existingImports, boolean needsSave) throws CoreException {
-		ASTParser parser= ASTParser.newParser(AST.JLS8);
+		ASTParser parser= ASTParser.newParser(AST.JLS9);
 		parser.setSource(cu);
 		parser.setResolveBindings(true);
 		
@@ -2165,7 +2165,7 @@
 		IPackageFragment pack= (IPackageFragment) cu.getParent();
 		String content= CodeGeneration.getCompilationUnitContent(cu, fileComment, typeComment, typeContent, lineDelimiter);
 		if (content != null) {
-			ASTParser parser= ASTParser.newParser(AST.JLS8);
+			ASTParser parser= ASTParser.newParser(AST.JLS9);
 			parser.setProject(cu.getJavaProject());
 			parser.setSource(content.toCharArray());
 			CompilationUnit unit= (CompilationUnit) parser.createAST(null);
@@ -2482,7 +2482,7 @@
 		ArrayList newMethods= new ArrayList();
 		CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(type.getJavaProject());
 		settings.createComments= isAddComments();
-		ASTParser parser= ASTParser.newParser(AST.JLS8);
+		ASTParser parser= ASTParser.newParser(AST.JLS9);
 		parser.setResolveBindings(true);
 		parser.setSource(cu);
 		CompilationUnit unit= (CompilationUnit) parser.createAST(new SubProgressMonitor(monitor, 1));
