diff --git a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java
index 2057253..854667a 100644
--- a/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java
+++ b/taverna-robundle/src/main/java/org/apache/taverna/robundle/manifest/combine/CombineManifest.java
@@ -65,6 +65,7 @@
 import org.apache.taverna.robundle.xml.combine.OmexManifest;
 import org.xml.sax.InputSource;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.jena.query.QueryExecution;
 import org.apache.jena.query.QueryExecutionFactory;
 import org.apache.jena.query.QueryFactory;
@@ -352,20 +353,26 @@
 			return;
 		}
 
-		for (URI about : bundleSubjects()) {
-			Resource resource = metadata.getResource(fakeFileURI(about));
+		Set<Pair<URI,URI>> foundAnnotations = new HashSet<>();
+		for (URI subject : bundleSubjects()) {
+			Resource resource = metadata.getResource(fakeFileURI(subject));
 			if (!metadata.containsResource(resource)) {
 				System.out.println("Nothing known about " + resource);
 				continue;
 			}
 
-			PathAnnotation ann = new PathAnnotation();
-			ann.setAbout(manifest.relativeToBundleRoot(about));
-			ann.setContent(manifest.relativeToBundleRoot(metadataRdf.toUri()));
-			manifest.getAnnotations().add(ann);
+			URI about = manifest.relativeToBundleRoot(subject);
+			URI content = manifest.relativeToBundleRoot(metadataRdf.toUri());
+			if (! foundAnnotations.add(Pair.of(about, content))) {
+				// Avoid duplication
+				PathAnnotation ann = new PathAnnotation();
+				ann.setAbout(subject);
+				ann.setContent(content);
+				manifest.getAnnotations().add(ann);
+			}
 
 			// Extract information that could be in our manifest
-			PathMetadata pathMetadata = manifest.getAggregation(about);
+			PathMetadata pathMetadata = manifest.getAggregation(subject);
 
 			// Created date. We'll prefer dcModified.
 			Property dcCreated = metadata
@@ -383,8 +390,9 @@
 							.getProperty("http://purl.org/dc/terms/W3CDTF");
 					Statement w3cSt = createdSt.getResource().getProperty(
 							dcW3CDTF);
-					if (w3cSt != null)
+					if (w3cSt != null) {
 						fileTime = literalAsFileTime(w3cSt.getObject());
+					}
 				}
 				if (fileTime != null) {
 					pathMetadata.setCreatedOn(fileTime);
diff --git a/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java b/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java
index a0d7ed3..355f258 100644
--- a/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java
+++ b/taverna-robundle/src/test/java/org/apache/taverna/robundle/fs/MemoryEfficiencyIT.java
@@ -74,7 +74,7 @@
 		try {
 			int numFiles = MANY_FILS;
 			System.out.println("Writing " + numFiles
-					+ " files in parallell over max " + MAX_WORKERS
+					+ " files in parallel over max " + MAX_WORKERS
 					+ " threads");
 			for (int i = 0; i < numFiles; i++) {
 				int folderNo = i % 100;
