diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/.classpath b/plugins/org.eclipse.dltk.python.activestatedebugger/.classpath
index 64c5e31..eca7bdb 100644
--- a/plugins/org.eclipse.dltk.python.activestatedebugger/.classpath
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.dltk.python.activestatedebugger/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.dltk.python.activestatedebugger/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..43df84b
--- /dev/null
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,59 @@
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/META-INF/MANIFEST.MF b/plugins/org.eclipse.dltk.python.activestatedebugger/META-INF/MANIFEST.MF
index 97643cd..49e3054 100644
--- a/plugins/org.eclipse.dltk.python.activestatedebugger/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/META-INF/MANIFEST.MF
@@ -15,5 +15,5 @@
  org.eclipse.dltk.core;bundle-version="0.0.0",
  org.eclipse.dltk.python.debug,
  org.eclipse.dltk.python.core
-Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerPlugin.java b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerPlugin.java
index 45dfda4..ff01bfa 100644
--- a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerPlugin.java
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerPlugin.java
@@ -20,11 +20,13 @@
 	public PythonActiveStateDebuggerPlugin() {
 	}
 
+	@Override
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
+	@Override
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
@@ -32,7 +34,7 @@
 
 	/**
 	 * Returns the shared instance
-	 * 
+	 *
 	 * @return the shared instance
 	 */
 	public static PythonActiveStateDebuggerPlugin getDefault() {
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunner.java b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunner.java
index 0097f9d..8851fe1 100644
--- a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunner.java
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunner.java
@@ -32,10 +32,7 @@
 		super(install);
 	}
 
-	/*
-	 * @see ExternalDebugginEngineRunner#alterConfig(String, InterpreterConfig,
-	 * String)
-	 */
+	@Override
 	protected InterpreterConfig alterConfig(InterpreterConfig config,
 			PreferencesLookupDelegate delegate) {
 
@@ -53,52 +50,35 @@
 		return config;
 	}
 
-	/*
-	 * @see DebuggingEngineRunner#getDebuggingEngineId()
-	 */
+	@Override
 	protected String getDebuggingEngineId() {
 		return ENGINE_ID;
 	}
 
-	/*
-	 * @see ExternalDebuggingEngineRunner#getDebuggingEnginePreferenceKey()
-	 */
+	@Override
 	protected String getDebuggingEnginePreferenceKey() {
 		return PythonActiveStateDebuggerConstants.DEBUGGING_ENGINE_PATH_KEY;
 	}
 
-	/*
-	 * @see
-	 * ExternalDebuggingEngineRunner#getDebuggingEnginePreferenceQualifier()
-	 */
+	@Override
 	protected String getDebuggingEnginePreferenceQualifier() {
 		return PythonActiveStateDebuggerPlugin.PLUGIN_ID;
 	}
 
-	/*
-	 * @see DebuggingEngineRunner#getDebugPreferenceQualifier()
-	 */
+	@Override
 	protected String getDebugPreferenceQualifier() {
 		return PythonDebugPlugin.PLUGIN_ID;
 	}
 
-	/*
-	 * @see DebuggingEngineRunner#getLoggingEnabledPreferenceKey()
-	 */
 	protected String getLoggingEnabledPreferenceKey() {
 		return PythonActiveStateDebuggerConstants.ENABLE_LOGGING;
 	}
 
-	/*
-	 * @see DebuggingEngineRunner#getLogFileNamePreferenceKey()
-	 */
+	@Override
 	protected String getLogFileNamePreferenceKey() {
 		return PythonActiveStateDebuggerConstants.LOG_FILE_NAME;
 	}
 
-	/*
-	 * @see DebuggingEngineRunner#getLogFilePathPreferenceKey ()
-	 */
 	protected String getLogFilePathPreferenceKey() {
 		return PythonActiveStateDebuggerConstants.LOG_FILE_PATH;
 	}
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunnerFactory.java b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunnerFactory.java
index b94581f..2e48c3e 100644
--- a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunnerFactory.java
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/PythonActiveStateDebuggerRunnerFactory.java
@@ -10,10 +10,8 @@
  */
 public class PythonActiveStateDebuggerRunnerFactory implements IInterpreterRunnerFactory
 {
-    /*
-     * @see org.eclipse.dltk.launching.IInterpreterRunnerFactory#createRunner(org.eclipse.dltk.launching.IInterpreterInstall)
-     */
-    public IInterpreterRunner createRunner(IInterpreterInstall install)
+    @Override
+	public IInterpreterRunner createRunner(IInterpreterInstall install)
     {
         return new PythonActiveStateDebuggerRunner(install);
     }
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferenceInitializer.java b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferenceInitializer.java
index ab15a56..ae78438 100644
--- a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferenceInitializer.java
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferenceInitializer.java
@@ -1,15 +1,14 @@
 package org.eclipse.dltk.python.activestatedebugger.preferences;
 
 import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-
 import org.eclipse.dltk.python.activestatedebugger.PythonActiveStateDebuggerConstants;
 import org.eclipse.dltk.python.activestatedebugger.PythonActiveStateDebuggerPlugin;
-
 import org.eclipse.jface.preference.IPreferenceStore;
 
 public class PythonActiveStateDebuggerPreferenceInitializer extends
 		AbstractPreferenceInitializer {
 
+	@Override
 	public void initializeDefaultPreferences() {
 		IPreferenceStore store = PythonActiveStateDebuggerPlugin.getDefault()
 				.getPreferenceStore();
diff --git a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferencePage.java b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferencePage.java
index 0ee3bbc..379a685 100644
--- a/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferencePage.java
+++ b/plugins/org.eclipse.dltk.python.activestatedebugger/src/org/eclipse/dltk/python/activestatedebugger/preferences/PythonActiveStateDebuggerPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2016 IBM Corporation 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
@@ -41,10 +41,11 @@
 	static PreferenceKey LOG_FILE_NAME = new PreferenceKey(
 			PythonActiveStateDebuggerPlugin.PLUGIN_ID,
 			PythonActiveStateDebuggerConstants.LOG_FILE_NAME);
-	
+
 	private static String PREFERENCE_PAGE_ID = "org.eclipse.dltk.python.preferences.debug.engines.activestatedebugger";
 	private static String PROPERTY_PAGE_ID = "org.eclipse.dltk.python.propertyPage.debug.engines.activestatedebugger";
 
+	@Override
 	protected AbstractOptionsBlock createOptionsBlock(
 			IStatusChangeListener newStatusChangedListener, IProject project,
 			IWorkbenchPreferenceContainer container) {
@@ -54,80 +55,75 @@
 				new PreferenceKey[] { ENGINE_PATH,ENABLE_LOGGING, LOG_FILE_PATH,
 						LOG_FILE_NAME }, container) {
 
+			@Override
 			protected void createOtherBlock(Composite parent) {
 				addDownloadLink(parent,
 						PreferenceMessages.DebuggingEngineDownloadPage,
 						PreferenceMessages.DebuggingEngineDownloadPageLink);
 			}
 
+			@Override
 			protected void createLoggingBlock(Composite composite) {
 				/*
 				 * remove once the python active state debug runner supports
-				 * setting up the log file  
+				 * setting up the log file
 				 */
 			}
 
+			@Override
 			protected PreferenceKey getDebuggingEnginePathKey() {
 				return ENGINE_PATH;
 			}
 
+			@Override
 			protected PreferenceKey getEnableLoggingPreferenceKey() {
 				return ENABLE_LOGGING;
 			}
 
+			@Override
 			protected PreferenceKey getLogFileNamePreferenceKey() {
 				return LOG_FILE_NAME;
 			}
 
+			@Override
 			protected PreferenceKey getLogFilePathPreferenceKey() {
 				return LOG_FILE_PATH;
 			}
 		};
 	}
 
-	/*
-	 * @see org.eclipse.dltk.ui.preferences.AbstractConfigurationBlockPropertyAndPreferencePage#getHelpId()
-	 */
+	@Override
 	protected String getHelpId() {
 		return null;
 	}
 
+	@Override
 	protected String getNatureId() {
 		return PythonNature.NATURE_ID;
 	}
-	
-	/*
-	 * @see org.eclipse.dltk.internal.ui.preferences.PropertyAndPreferencePage#getPreferencePageId()
-	 */
+
+	@Override
 	protected String getPreferencePageId() {
 		return PREFERENCE_PAGE_ID;
 	}
 
-	/*
-	 * @see org.eclipse.dltk.ui.preferences.AbstractConfigurationBlockPropertyAndPreferencePage#getProjectHelpId()
-	 */
+	@Override
 	protected String getProjectHelpId() {
 		// TODO Auto-generated method stub
 		return null;
 	}
 
-	/*
-	 * @see org.eclipse.dltk.internal.ui.preferences.PropertyAndPreferencePage#getPropertyPageId()
-	 */
+	@Override
 	protected String getPropertyPageId() {
 		return PROPERTY_PAGE_ID;
 	}
 
-	/*
-	 * @see org.eclipse.dltk.ui.preferences.AbstractConfigurationBlockPropertyAndPreferencePage#setDescription()
-	 */
+	@Override
 	protected void setDescription() {
 		setDescription(PreferenceMessages.DebuggingEngineDescription);
 	}
 
-	/*
-	 * @see org.eclipse.dltk.ui.preferences.AbstractConfigurationBlockPropertyAndPreferencePage#setPreferenceStore()
-	 */
+	@Override
 	protected void setPreferenceStore() {
 		setPreferenceStore(PythonActiveStateDebuggerPlugin.getDefault()
 				.getPreferenceStore());
