diff --git a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAJMarkers.java b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAJMarkers.java
index b65060d..e01ddb3 100644
--- a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAJMarkers.java
+++ b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAJMarkers.java
@@ -22,35 +22,50 @@
 public class DeleteAJMarkers {
     private IProject project;
     private final IFile[] sourceFiles;
+    private String reason;
 
-    public DeleteAJMarkers(IProject project) {
+    public DeleteAJMarkers(IProject project,String reason) {
         this.project = project;
         this.sourceFiles = null;
+        this.reason=reason;
     }
     
     /**
      * @deprecated Use {@link DeleteAJMarkers#DeleteAJMarkers(IProject, IFile[])} instead
      */
-    public DeleteAJMarkers(IProject project, File[] sourceFiles) {
+    public DeleteAJMarkers(IProject project, File[] sourceFiles, String reason) {
         this.project = project;
         this.sourceFiles = DeleteAndUpdateAJMarkersJob.javaFileToIFile(sourceFiles, project);
+        this.reason=reason;
     }
-    public DeleteAJMarkers(IProject project, IFile[] sourceFiles) {
+    public DeleteAJMarkers(IProject project, IFile[] sourceFiles, String reason) {
         this.project = project;
         this.sourceFiles = sourceFiles;
+        this.reason=reason;
     }
-    
+
+    private String toJobString() {
+    	StringBuilder s = new StringBuilder();
+    	s.append("Delete markers: "+project.getName());
+    	if (reason!=null && reason.length()!=0) {
+    		s.append(" - "+reason);
+    	}
+    	if (sourceFiles != null) {
+    		s.append(" ("+sourceFiles.length+" files)");
+    	}
+    	return s.toString();
+    }
     
     
     protected IStatus run(IProgressMonitor monitor) {
         try {
-            AJLog.logStart("Delete markers: " + project.getName());
+            AJLog.logStart(toJobString());
             if (sourceFiles != null) {
                 deleteMarkersForFiles(monitor);
             } else {
                 deleteAllMarkers(monitor);
             }
-            AJLog.logEnd(AJLog.BUILDER, "Delete markers: " + project.getName(), "Finished deleting markers for " + project.getName());
+            AJLog.logEnd(AJLog.BUILDER, toJobString(), "Finished deleting markers for " + project.getName());
             return Status.OK_STATUS;
         } catch(CoreException e) {
             return new Status(IStatus.ERROR, AspectJUIPlugin.PLUGIN_ID, 
diff --git a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAndUpdateAJMarkersJob.java b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAndUpdateAJMarkersJob.java
index 16394c3..9beadd1 100644
--- a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAndUpdateAJMarkersJob.java
+++ b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/DeleteAndUpdateAJMarkersJob.java
@@ -28,33 +28,33 @@
     
     public DeleteAndUpdateAJMarkersJob(IProject project, String reason) {
         super("Delete and update AspectJ markers for " + project.getName()+": "+reason);
-        update = new UpdateAJMarkers(project);
-        delete = new DeleteAJMarkers(project);
+        update = new UpdateAJMarkers(project,reason);
+        delete = new DeleteAJMarkers(project,reason);
         rule = createSchedulingRule(project, null);    	
     }
 
     public DeleteAndUpdateAJMarkersJob(IProject project) {
         super("Delete and update AspectJ markers for " + project.getName());
-        update = new UpdateAJMarkers(project);
-        delete = new DeleteAJMarkers(project);
+        update = new UpdateAJMarkers(project,"");
+        delete = new DeleteAJMarkers(project,"");
         rule = createSchedulingRule(project, null);
     }
 
     public DeleteAndUpdateAJMarkersJob(IProject project, File[] sourceFiles, String reason) {
         super("Delete and update AspectJ markers for " + project.getName()+": "+reason);
         IFile[] iFiles = javaFileToIFile(sourceFiles, project);
-        update = new UpdateAJMarkers(project, iFiles);
-        delete = new DeleteAJMarkers(project, iFiles);
+        update = new UpdateAJMarkers(project, iFiles,reason);
+        delete = new DeleteAJMarkers(project, iFiles,reason);
         rule = createSchedulingRule(project, iFiles);
     }
 
-    public DeleteAndUpdateAJMarkersJob(IProject project, File[] sourceFiles) {
-        super("Delete and update AspectJ markers for " + project.getName());
-        IFile[] iFiles = javaFileToIFile(sourceFiles, project);
-        update = new UpdateAJMarkers(project, iFiles);
-        delete = new DeleteAJMarkers(project, iFiles);
-        rule = createSchedulingRule(project, iFiles);
-    }
+//    public DeleteAndUpdateAJMarkersJob(IProject project, File[] sourceFiles, String reason) {
+//        super("Delete and update AspectJ markers for " + project.getName());
+//        IFile[] iFiles = javaFileToIFile(sourceFiles, project);
+//        update = new UpdateAJMarkers(project, iFiles,reason);
+//        delete = new DeleteAJMarkers(project, iFiles,reason);
+//        rule = createSchedulingRule(project, iFiles);
+//    }
 
     public IStatus run(IProgressMonitor monitor) {
         try {
diff --git a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/UpdateAJMarkers.java b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/UpdateAJMarkers.java
index c3eec9f..b2a5b88 100644
--- a/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/UpdateAJMarkers.java
+++ b/org.eclipse.ajdt.ui/src/org/eclipse/ajdt/internal/ui/markers/UpdateAJMarkers.java
@@ -58,19 +58,22 @@
 	private final IFile[] sourceFiles;
     private int fileCount;
     private int markerCount;
+    private String reason;
 	
 	/**
 	 * To update markers for the entire project
 	 * 
      * @param project the poject that needs updating
 	 */
-    public UpdateAJMarkers(IProject project) {
+    public UpdateAJMarkers(IProject project, String reason) {
         this.model = AJProjectModelFactory.getInstance().getModelForProject(project);
         this.project = project;
         this.sourceFiles = null;
         this.fileCount = 0;
         this.markerCount = 0;
+        this.reason = reason;
     }
+    
     /**
      * to update markers for the given files only.
      * 
@@ -81,10 +84,11 @@
      * 
      * @deprecated Use {@link UpdateAJMarkers#UpdateAJMarkers(IProject, IFile[])} instead
      */
-    public UpdateAJMarkers(IProject project, File[] sourceFiles) {
+    public UpdateAJMarkers(IProject project, File[] sourceFiles, String reason) {
         this.model = AJProjectModelFactory.getInstance().getModelForProject(project);
         this.project = project;
         this.sourceFiles = DeleteAndUpdateAJMarkersJob.javaFileToIFile(sourceFiles, project);        
+        this.reason = reason;
     }
     
     /**
@@ -96,20 +100,33 @@
      * need updating 
      * 
      */
-    public UpdateAJMarkers(IProject project, IFile[] sourceFiles) {
+    public UpdateAJMarkers(IProject project, IFile[] sourceFiles, String reason) {
         this.model = AJProjectModelFactory.getInstance().getModelForProject(project);
         this.project = project;
         this.sourceFiles = sourceFiles;        
+        this.reason = reason;
     }
 	
+    private String toJobString() {
+    	StringBuilder s = new StringBuilder();
+    	s.append("Create markers: "+project.getName());
+    	if (reason!=null && reason.length()!=0) {
+    		s.append(" - "+reason);
+    	}
+    	if (sourceFiles != null) {
+    		s.append(" ("+sourceFiles.length+" files)");
+    	}
+    	return s.toString();
+    }
+    
 	protected IStatus run(IProgressMonitor monitor) {
-        AJLog.logStart("Create markers: " + project.getName());
+        AJLog.logStart(toJobString());
         if (sourceFiles != null) {
             addMarkersForFiles(monitor);
         } else {
             addMarkersForProject(monitor);
         }
-        AJLog.logEnd(AJLog.BUILDER, "Create markers: " + project.getName(), "Finished creating markers for " + project.getName());
+        AJLog.logEnd(AJLog.BUILDER, toJobString(), "Finished creating markers for " + project.getName());
         AJLog.log(AJLog.BUILDER, "Created " + markerCount + " markers in " + fileCount + " files");
         return Status.OK_STATUS;
     }
