diff --git a/org.apache.easyant4e/src/org/apache/easyant4e/ivyde/extension/page/BuildLifeCycleContentProvider.java b/org.apache.easyant4e/src/org/apache/easyant4e/ivyde/extension/page/BuildLifeCycleContentProvider.java
index fcce937..3e2b62d 100644
--- a/org.apache.easyant4e/src/org/apache/easyant4e/ivyde/extension/page/BuildLifeCycleContentProvider.java
+++ b/org.apache.easyant4e/src/org/apache/easyant4e/ivyde/extension/page/BuildLifeCycleContentProvider.java
@@ -23,10 +23,10 @@
 import org.apache.easyant.core.report.PhaseReport;
 import org.apache.easyant.core.report.TargetReport;
 import org.apache.easyant4e.services.EasyantProjectService;
-import org.apache.ivyde.eclipse.ui.core.IvyFileEditorInput;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.IFileEditorInput;
 
 import com.google.inject.Inject;
 
@@ -43,8 +43,8 @@
     }
 
     public Object[] getElements(Object inputElement) {
-        if (inputElement instanceof IvyFileEditorInput) {
-            IvyFileEditorInput ivyFileEditorInput = (IvyFileEditorInput) inputElement;
+        if (inputElement instanceof IFileEditorInput) {
+            IFileEditorInput ivyFileEditorInput = (IFileEditorInput) inputElement;
             IFile ivyFile = ivyFileEditorInput.getFile();
             List<PhaseReport> phaseReports = easyantProjectService.getPhases(ivyFile);
             List<TargetReport> targetReports = easyantProjectService.getTargets(ivyFile);
diff --git a/org.apache.easyant4e/src/org/apache/easyant4e/natures/EasyAntNature.java b/org.apache.easyant4e/src/org/apache/easyant4e/natures/EasyAntNature.java
index a314e1f..a257c4b 100644
--- a/org.apache.easyant4e/src/org/apache/easyant4e/natures/EasyAntNature.java
+++ b/org.apache.easyant4e/src/org/apache/easyant4e/natures/EasyAntNature.java
@@ -27,8 +27,8 @@
 import org.apache.easyant.core.descriptor.PropertyDescriptor;
 import org.apache.easyant4e.Activator;
 import org.apache.easyant4e.services.EasyantProjectService;
-import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathContainer;
-import org.apache.ivyde.eclipse.cpcontainer.IvyClasspathUtil;
+import org.apache.ivyde.eclipse.cp.IvyClasspathContainer;
+import org.apache.ivyde.eclipse.cp.IvyClasspathContainerHelper;
 import org.eclipse.core.resources.ICommand;
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFolder;
@@ -130,7 +130,7 @@
         }
         
         // add the classpath entry
-        IPath path = new Path(IvyClasspathContainer.CONTAINER_ID).append(projectConf.toString());
+        IPath path = new Path(IvyClasspathContainer.ID).append(projectConf.toString());
         IClasspathEntry newEntry = JavaCore.newContainerEntry(path);
         addClassPathEntry(javaProject, newEntry);
     }
@@ -260,7 +260,7 @@
                 IClasspathEntry entry = entries[i];
                 if (entry != null && entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
                     IPath path = entry.getPath();
-                    if (IvyClasspathUtil.isIvyClasspathContainer(path)) {
+                    if (IvyClasspathContainerHelper.isIvyClasspathContainer(path)) {
                         continue;
                     }
                 }
