diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryTask.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryTask.java
index 763ce8a..5a6ca77 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryTask.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/provisional/tasklist/AbstractRepositoryTask.java
@@ -27,9 +27,11 @@
 
 	/** The last time this task's bug report was downloaded from the server. */
 	protected Date lastSynchronized;
-	protected RepositoryTaskData taskData;
+
+	protected transient RepositoryTaskData taskData;
+
 	protected boolean currentlySynchronizing;
-	
+
 	/**
 	 * Value is <code>true</code> if the bug report has saved changes that
 	 * need synchronizing with the repository.
@@ -39,24 +41,25 @@
 	public enum RepositoryTaskSyncState {
 		OUTGOING, SYNCHRONIZED, INCOMING, CONFLICT
 	}
-	
+
 	protected RepositoryTaskSyncState syncState = RepositoryTaskSyncState.SYNCHRONIZED;
 
 	public static final String HANDLE_DELIM = "-";
-		
+
 	public AbstractRepositoryTask(String handle, String label, boolean newTask) {
 		super(handle, label, newTask);
 	}
 
 	public abstract String getRepositoryKind();
-	
+
 	/**
-	 * @return	true	if the task can be queried and manipulated without connecting to the server
+	 * @return true if the task can be queried and manipulated without
+	 *         connecting to the server
 	 */
 	public abstract boolean isPersistentInWorkspace();
-	
+
 	public abstract boolean isDownloaded();
-	
+
 	public Date getLastSynchronized() {
 		return lastSynchronized;
 	}
@@ -72,7 +75,7 @@
 	public RepositoryTaskSyncState getSyncState() {
 		return syncState;
 	}
-	
+
 	/**
 	 * @return The number of seconds ago that this task's bug report was
 	 *         downloaded from the server.
@@ -142,7 +145,8 @@
 	}
 
 	/**
-	 * @param taskId	must be an integer
+	 * @param taskId
+	 *            must be an integer
 	 */
 	public static String getHandle(String repositoryUrl, String taskId) {
 		if (repositoryUrl == null) {
@@ -165,18 +169,15 @@
 		this.isDirty = isDirty;
 	}
 
-	
 	public RepositoryTaskData getTaskData() {
 		return taskData;
 	}
-	
 
 	public void setTaskData(RepositoryTaskData taskData) {
 		this.taskData = taskData;
 		// TODO: remove?
 		if (taskData != null) {
-			setDescription(HtmlStreamTokenizer.unescape(AbstractRepositoryTask
-					.getTaskIdAsInt(getHandleIdentifier())
+			setDescription(HtmlStreamTokenizer.unescape(AbstractRepositoryTask.getTaskIdAsInt(getHandleIdentifier())
 					+ ": " + taskData.getSummary()));
 		}
 	}
