diff --git a/sigil/bldcommon/prepare/ivy.xml b/sigil/bldcommon/prepare/ivy.xml
index ddfde2d..54b819e 100644
--- a/sigil/bldcommon/prepare/ivy.xml
+++ b/sigil/bldcommon/prepare/ivy.xml
@@ -37,7 +37,6 @@
         <dependency org="org.eclipse" name="org.eclipse.jface.text" rev="3.4.2.r342_v20081119-0800" />
         <dependency org="org.eclipse" name="org.eclipse.jface" rev="3.4.2.M20090107-0800" />
         <dependency org="org.eclipse" name="org.eclipse.ltk.core.refactoring" rev="3.4.2.r342_v20081028-0800" />
-        <dependency org="org.eclipse" name="org.eclipse.pde.ui" rev="3.4.0.v20090202" />
         <dependency org="org.eclipse" name="org.eclipse.swt.carbon.macosx" rev="3.4.1.v3452b" />
         <dependency org="org.eclipse" name="org.eclipse.ui.cheatsheets" rev="3.3.101.v20080702_34x" />
         <dependency org="org.eclipse" name="org.eclipse.ui.console" rev="3.3.1.v20090128_r342" />
diff --git a/sigil/eclipse/ui/sigil.properties b/sigil/eclipse/ui/sigil.properties
index 5abe7b8..b602994 100644
--- a/sigil/eclipse/ui/sigil.properties
+++ b/sigil/eclipse/ui/sigil.properties
@@ -68,8 +68,6 @@
 	org.eclipse.jface.window, \
 	org.eclipse.jface.wizard, \
 	org.eclipse.ltk.core.refactoring, \
-	org.eclipse.pde.internal.ui.editor, \
-	org.eclipse.pde.internal.ui.parts, \
 	org.eclipse.ui.editors.text, \
 	org.eclipse.ui.forms, \
 	org.eclipse.ui.forms.editor, \
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/form/SigilSection.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/form/SigilSection.java
index 5a1c072..d4d7a2c 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/form/SigilSection.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/form/SigilSection.java
@@ -25,9 +25,6 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.pde.internal.ui.editor.FormLayoutFactory;
-import org.eclipse.pde.internal.ui.parts.FormEntry;
-import org.eclipse.pde.internal.ui.parts.IFormEntryListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
@@ -36,6 +33,7 @@
 import org.eclipse.ui.forms.IPartSelectionListener;
 import org.eclipse.ui.forms.SectionPart;
 import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.events.IHyperlinkListener;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.Section;
@@ -44,7 +42,7 @@
 
 
 @SuppressWarnings("restriction")
-public abstract class SigilSection extends SectionPart implements IFormEntryListener, IPartSelectionListener
+public abstract class SigilSection extends SectionPart implements IHyperlinkListener, IPartSelectionListener
 {
 
     private SigilPage page;
@@ -86,13 +84,27 @@
     {
         Section section = getSection();
         section.setText( title );
-        section.setLayout( FormLayoutFactory.createClearTableWrapLayout( false, 1 ) );
+        
+		TableWrapLayout layout = new TableWrapLayout();
+
+		layout.topMargin = 2;
+		layout.bottomMargin = 2;
+		layout.leftMargin = 2;
+		layout.rightMargin = 2;
+
+		layout.horizontalSpacing = 0;
+		layout.verticalSpacing = 0;
+
+		layout.makeColumnsEqualWidth = false;
+		layout.numColumns = 1;
+
+        section.setLayout( layout );
+        
         TableWrapData data = new TableWrapData( TableWrapData.FILL_GRAB );
         section.setLayoutData( data );
     }
 
-
-    protected void setMarker( String type, String message, int priority, int severity ) throws CoreException
+	protected void setMarker( String type, String message, int priority, int severity ) throws CoreException
     {
         IFileEditorInput file = ( IFileEditorInput ) getPage().getEditor().getEditorInput();
         IMarker marker = file.getFile().createMarker( type );
@@ -144,47 +156,18 @@
         return client;
     }
 
-
-    public void browseButtonSelected( FormEntry entry )
-    {
-    }
-
-
-    public void focusGained( FormEntry entry )
-    {
-    }
-
-
-    public void selectionChanged( FormEntry entry )
-    {
-    }
-
-
-    public void textDirty( FormEntry entry )
-    {
-    }
-
-
-    public void textValueChanged( FormEntry entry )
-    {
-    }
-
-
     public void linkActivated( HyperlinkEvent e )
+    {        
+    }
+    
+    public void linkExited(HyperlinkEvent e)
+    {	
+    }
+    
+    public void linkEntered(HyperlinkEvent e)
     {
     }
 
-
-    public void linkEntered( HyperlinkEvent e )
-    {
-    }
-
-
-    public void linkExited( HyperlinkEvent e )
-    {
-    }
-
-
     public void selectionChanged( IFormPart part, ISelection selection )
     {
     }
