diff --git a/eclipsecon08/org.eclipse.dltk.examples.python.part3/src/org/eclipse/dltk/examples/python/internal/ui/editor/ExamplePythonEditor.java b/eclipsecon08/org.eclipse.dltk.examples.python.part3/src/org/eclipse/dltk/examples/python/internal/ui/editor/ExamplePythonEditor.java
index 41c3bbb..b372668 100644
--- a/eclipsecon08/org.eclipse.dltk.examples.python.part3/src/org/eclipse/dltk/examples/python/internal/ui/editor/ExamplePythonEditor.java
+++ b/eclipsecon08/org.eclipse.dltk.examples.python.part3/src/org/eclipse/dltk/examples/python/internal/ui/editor/ExamplePythonEditor.java
@@ -5,6 +5,7 @@
 import org.eclipse.dltk.examples.python.internal.ExamplePythonUI;
 import org.eclipse.dltk.internal.ui.editor.ScriptEditor;
 import org.eclipse.dltk.ui.text.ScriptTextTools;
+import org.eclipse.dltk.ui.text.folding.IFoldingStructureProvider;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IDocumentExtension3;
@@ -48,4 +49,14 @@
 			}
 		}
 	}
+
+	private IFoldingStructureProvider foldingStructureProvider = null;
+
+	@Override
+	protected IFoldingStructureProvider getFoldingStructureProvider() {
+		if (foldingStructureProvider == null) {
+			foldingStructureProvider = new ExamplePythonFoldingStructureProvider();
+		}
+		return foldingStructureProvider;
+	}
 }
diff --git a/eclipsecon08/org.eclipse.dltk.examples.python.part3/src/org/eclipse/dltk/examples/python/internal/ui/editor/ExamplePythonFoldingStructureProvider.java b/eclipsecon08/org.eclipse.dltk.examples.python.part3/src/org/eclipse/dltk/examples/python/internal/ui/editor/ExamplePythonFoldingStructureProvider.java
new file mode 100644
index 0000000..ce85e5c
--- /dev/null
+++ b/eclipsecon08/org.eclipse.dltk.examples.python.part3/src/org/eclipse/dltk/examples/python/internal/ui/editor/ExamplePythonFoldingStructureProvider.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ ******************************************************************************/
+package org.eclipse.dltk.examples.python.internal.ui.editor;
+
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.dltk.examples.internal.python.core.ExamplePythonNature;
+import org.eclipse.dltk.examples.python.internal.ExamplePythonUI;
+import org.eclipse.dltk.ui.text.folding.AbstractASTFoldingStructureProvider;
+import org.eclipse.jface.text.rules.IPartitionTokenScanner;
+
+public class ExamplePythonFoldingStructureProvider extends
+		AbstractASTFoldingStructureProvider {
+
+	public String getCommentPartition() {
+		return IExamplePythonPartitions.PYTHON_COMMENT;
+	}
+
+	protected ILog getLog() {
+		return ExamplePythonUI.getDefault().getLog();
+	}
+
+	protected String getPartition() {
+		return IExamplePythonPartitions.PYTHON_PARTITIONING;
+	}
+
+	protected IPartitionTokenScanner getPartitionScanner() {
+		return ExamplePythonUI.getDefault().getTextTools()
+				.getPartitionScanner();
+	}
+
+	protected String[] getPartitionTypes() {
+		return IExamplePythonPartitions.PYTHON_PARITION_TYPES;
+	}
+
+	protected String getNatureId() {
+		return ExamplePythonNature.PYTHON_NATURE;
+	}
+}
