diff --git a/src/main/java/org/purl/wf4ever/robundle/Bundle.java b/src/main/java/org/purl/wf4ever/robundle/Bundle.java
index dd34433..e5f0619 100644
--- a/src/main/java/org/purl/wf4ever/robundle/Bundle.java
+++ b/src/main/java/org/purl/wf4ever/robundle/Bundle.java
@@ -16,8 +16,8 @@
 public class Bundle implements Closeable {
 
 	private boolean deleteOnClose;
-	private final Path root;
 	private Manifest manifest;
+	private final Path root;
 
 	public Bundle(Path root, boolean deleteOnClose) {
 		this.root = root;
diff --git a/src/main/java/org/purl/wf4ever/robundle/Bundles.java b/src/main/java/org/purl/wf4ever/robundle/Bundles.java
index 4068ee3..4e286fb 100644
--- a/src/main/java/org/purl/wf4ever/robundle/Bundles.java
+++ b/src/main/java/org/purl/wf4ever/robundle/Bundles.java
@@ -41,16 +41,16 @@
  */
 public class Bundles {
 
-	private static final String MANIFEST_JSON = "manifest.json";
 	private static final String ANNOTATIONS = "annotations";
+	private static final Charset ASCII = Charset.forName("ASCII");
 	private static final String DOT_RO = ".ro";
 
 	protected static final String DOT_URL = ".url";
 
-	private static final Charset ASCII = Charset.forName("ASCII");
 	private static final String INI_INTERNET_SHORTCUT = "InternetShortcut";
 	private static final String INI_URL = "URL";
 	private static final Charset LATIN1 = Charset.forName("Latin1");
+	private static final String MANIFEST_JSON = "manifest.json";
 	private static final Charset UTF8 = Charset.forName("UTF-8");
 
 	public static void closeAndSaveBundle(Bundle bundle, Path destination)
diff --git a/src/main/java/org/purl/wf4ever/robundle/fs/BundleFileSystemProvider.java b/src/main/java/org/purl/wf4ever/robundle/fs/BundleFileSystemProvider.java
index d8d5f76..cbb161d 100644
--- a/src/main/java/org/purl/wf4ever/robundle/fs/BundleFileSystemProvider.java
+++ b/src/main/java/org/purl/wf4ever/robundle/fs/BundleFileSystemProvider.java
@@ -151,9 +151,11 @@
 		private static final BundleFileSystemProvider INSTANCE = new BundleFileSystemProvider();
 	}
 
-	public static final String MIMETYPE_FILE = "mimetype";
+	private static final String APP = "app";
 
 	public static final String APPLICATION_VND_WF4EVER_ROBUNDLE_ZIP = "application/vnd.wf4ever.robundle+zip";
+	public static final String MIMETYPE_FILE = "mimetype";
+
 	/**
 	 * The list of open file systems. This is static so that it is shared across
 	 * eventual multiple instances of this provider (such as when running in an
@@ -164,8 +166,6 @@
 
 	private static final Charset UTF8 = Charset.forName("UTF-8");
 
-	private static final String APP = "app";
-
 	protected static void addMimeTypeToZip(ZipOutputStream out, String mimetype)
 			throws IOException {
 		if (mimetype == null) {
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/Manifest.java b/src/main/java/org/purl/wf4ever/robundle/manifest/Manifest.java
index d5891ab..e56dc20 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/Manifest.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/Manifest.java
@@ -50,16 +50,16 @@
 		public abstract String toString();
 	}
 
-	private static final String MANIFEST_JSON = "manifest.json";
-
 	private static Logger logger = Logger.getLogger(Manifest.class
 			.getCanonicalName());
 
-	private static URI ROOT = URI.create("/");
+	private static final String MANIFEST_JSON = "manifest.json";
 
 	private static final String META_INF = "/META-INF";
+
 	private static final String MIMETYPE = "/mimetype";
 	private static final String RO = "/.ro";
+	private static URI ROOT = URI.create("/");
 
 	public static FileTime now() {
 		return FileTime.fromMillis(new GregorianCalendar().getTimeInMillis());
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/PathAnnotation.java b/src/main/java/org/purl/wf4ever/robundle/manifest/PathAnnotation.java
index 53828f6..e2959d5 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/PathAnnotation.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/PathAnnotation.java
@@ -13,8 +13,8 @@
 @JsonPropertyOrder(value = { "uri", "about", "content" })
 public class PathAnnotation {
 	private List<URI> about = new ArrayList<>();
-	private URI uri;
 	private URI content;
+	private URI uri;
 
 	public void generateAnnotationId() {
 		setUri(URI.create("urn:uuid:" + UUID.randomUUID()));
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/PathMetadata.java b/src/main/java/org/purl/wf4ever/robundle/manifest/PathMetadata.java
index 22c380c..41d2388 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/PathMetadata.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/PathMetadata.java
@@ -16,19 +16,19 @@
 
 	private static URI ROOT = URI.create("/");
 
-	private Path file;
-	private URI uri;
-	private String mediatype;
-
-	private FileTime createdOn;
-	private Agent createdBy;
-
-	private FileTime authoredOn;
 	private List<Agent> authoredBy = new ArrayList<>();
+	private FileTime authoredOn;
+	private Proxy bundledAs;
 
 	private URI conformsTo;
+	private Agent createdBy;
 
-	private Proxy bundledAs;
+	private FileTime createdOn;
+	private Path file;
+
+	private String mediatype;
+
+	private URI uri;
 
 	protected PathMetadata() {
 	}
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/Proxy.java b/src/main/java/org/purl/wf4ever/robundle/manifest/Proxy.java
index 88b279d..c99bc62 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/Proxy.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/Proxy.java
@@ -11,11 +11,11 @@
 		"aggregatedOn" })
 public class Proxy {
 
-	private URI uri;
-	private Path folder;
-	private String filename;
 	private Agent aggregatedBy;
 	private FileTime aggregatedOn;
+	private String filename;
+	private Path folder;
+	private URI uri;
 
 	public Agent getAggregatedBy() {
 		return aggregatedBy;
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java b/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java
index fe1687d..9834cfa 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/RDFToManifest.java
@@ -53,28 +53,28 @@
 		}
 	}
 
+	private static final String BUNDLE = "http://purl.org/wf4ever/bundle#";
+
+	private static final String BUNDLE_RDF = "/ontologies/bundle.owl";
+	private static final String DCT = "http://purl.org/dc/terms/";
+	private static final String FOAF_0_1 = "http://xmlns.com/foaf/0.1/";
+	private static final String FOAF_RDF = "/ontologies/foaf.rdf";
+
 	private static Logger logger = Logger.getLogger(RDFToManifest.class
 			.getCanonicalName());
-
+	private static final String OA = "http://www.w3.org/ns/oa#";
+	private static final String OA_RDF = "/ontologies/oa.rdf";
+	private static final String ORE = "http://www.openarchives.org/ore/terms/";
+	private static final String PAV = "http://purl.org/pav/";
+	private static final String PAV_RDF = "/ontologies/pav.rdf";
+	private static final String PROV = "http://www.w3.org/ns/prov#";
+	private static final String PROV_AQ_RDF = "/ontologies/prov-aq.rdf";
+	private static final String PROV_O = "http://www.w3.org/ns/prov-o#";
+	private static final String PROV_O_RDF = "/ontologies/prov-o.rdf";
+	private static final String RO = "http://purl.org/wf4ever/ro#";
 	static {
 		setCachedHttpClientInJsonLD();
 	}
-	private static final String PROV = "http://www.w3.org/ns/prov#";
-	private static final String PROV_O = "http://www.w3.org/ns/prov-o#";
-	private static final String FOAF_0_1 = "http://xmlns.com/foaf/0.1/";
-
-	private static final String PAV = "http://purl.org/pav/";
-	private static final String DCT = "http://purl.org/dc/terms/";
-	private static final String RO = "http://purl.org/wf4ever/ro#";
-	private static final String BUNDLE = "http://purl.org/wf4ever/bundle#";
-	private static final String ORE = "http://www.openarchives.org/ore/terms/";
-	private static final String OA = "http://www.w3.org/ns/oa#";
-	private static final String OA_RDF = "/ontologies/oa.rdf";
-	private static final String FOAF_RDF = "/ontologies/foaf.rdf";
-	private static final String BUNDLE_RDF = "/ontologies/bundle.owl";
-	private static final String PAV_RDF = "/ontologies/pav.rdf";
-	private static final String PROV_O_RDF = "/ontologies/prov-o.rdf";
-	private static final String PROV_AQ_RDF = "/ontologies/prov-aq.rdf";
 	public static <T> ClosableIterable<T> iterate(ExtendedIterator<T> iterator) {
 		return new ClosableIterable<T>(iterator);
 	}
@@ -116,42 +116,42 @@
 		// JSONUtilsSub.setHttpClient(wrappedHttpClient);
 		// }
 	}
-	private OntModel ore;
 	private ObjectProperty aggregates;
-	private ObjectProperty proxyFor;
-	private ObjectProperty proxyIn;
 	private OntClass aggregation;
+	private ObjectProperty authoredBy;
+	private DatatypeProperty authoredOn;
+	private OntModel bundle;
+	private ObjectProperty conformsTo;
+	private ObjectProperty createdBy;
+	private DatatypeProperty createdOn;
+	private OntModel dct;
 	private OntModel foaf;
 	private DatatypeProperty foafName;
-	private OntModel pav;
-	private ObjectProperty createdBy;
-	private OntModel prov;
-	private OntModel provaq;
-	private ObjectProperty hasProvenance;
-	private OntModel dct;
-
-	private ObjectProperty conformsTo;
-
-	private OntClass standard;
-
-	private ObjectProperty authoredBy;
-
-	private DatatypeProperty createdOn;
-	private DatatypeProperty authoredOn;
 	private DatatypeProperty format;
-	private OntModel oa;
+	private ObjectProperty hasAnnotation;
+
 	private ObjectProperty hasBody;
-	private ObjectProperty hasTarget;
 
-	private ObjectProperty isDescribedBy;
-
-	private OntModel bundle;
+	private ObjectProperty hasProvenance;
 
 	private ObjectProperty hasProxy;
 
+	private ObjectProperty hasTarget;
 	private ObjectProperty inFolder;
+	private ObjectProperty isDescribedBy;
+	private OntModel oa;
+	private OntModel ore;
+	private OntModel pav;
 
-	private ObjectProperty hasAnnotation;
+	private OntModel prov;
+
+	private OntModel provaq;
+
+	private ObjectProperty proxyFor;
+
+	private ObjectProperty proxyIn;
+
+	private OntClass standard;
 
 	public RDFToManifest() {
 		loadOntologies();
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/combine/CombineManifest.java b/src/main/java/org/purl/wf4ever/robundle/manifest/combine/CombineManifest.java
index f1871e1..15fcb4b 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/combine/CombineManifest.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/combine/CombineManifest.java
@@ -76,31 +76,27 @@
 
 	}
 
-	private static final URI OMEX_METADATA = URI
-			.create("http://identifiers.org/combine.specifications/omex-metadata");
-
-	private static final String MANIFEST_XML = "manifest.xml";
+	private static JAXBContext jaxbContext;
 
 	private static Logger logger = Logger.getLogger(CombineManifest.class
 			.getCanonicalName());
 
-	public static boolean containsManifest(Bundle bundle) {
-		return Files.isRegularFile(manifestXmlPath(bundle));
-	}
-	private org.purl.wf4ever.robundle.manifest.Manifest manifest;
-	private Bundle bundle;
-
-	private static boolean warnedPrefixMapper;
+	private static final String MANIFEST_XML = "manifest.xml";
 
 	private static ObjectFactory objectFactory = new ObjectFactory();
-
-	private static JAXBContext jaxbContext;
-
+	private static final URI OMEX_METADATA = URI
+			.create("http://identifiers.org/combine.specifications/omex-metadata");
 	private static final String sparqlPrefixes = "PREFIX foaf:  <http://xmlns.com/foaf/0.1/> \n"
 			+ "PREFIX vcard: <http://www.w3.org/2006/vcard/ns#> \n"
 			+ "PREFIX rdfs:  <http://www.w3.org/2000/01/rdf-schema#> \n"
 			+ "PREFIX dct:   <http://purl.org/dc/terms/> \n";
 
+	private static boolean warnedPrefixMapper;
+
+	public static boolean containsManifest(Bundle bundle) {
+		return Files.isRegularFile(manifestXmlPath(bundle));
+	}
+
 	protected static synchronized Marshaller createMarshaller()
 			throws JAXBException {
 		Marshaller marshaller = getJaxbContext().createMarshaller();
@@ -252,6 +248,10 @@
 		}
 	}
 
+	private Bundle bundle;
+
+	private org.purl.wf4ever.robundle.manifest.Manifest manifest;
+
 	public CombineManifest(org.purl.wf4ever.robundle.manifest.Manifest manifest) {
 		this.manifest = manifest;
 		this.bundle = manifest.getBundle();
diff --git a/src/main/java/org/purl/wf4ever/robundle/manifest/odf/ODFManifest.java b/src/main/java/org/purl/wf4ever/robundle/manifest/odf/ODFManifest.java
index adbe3d7..f6ba807 100644
--- a/src/main/java/org/purl/wf4ever/robundle/manifest/odf/ODFManifest.java
+++ b/src/main/java/org/purl/wf4ever/robundle/manifest/odf/ODFManifest.java
@@ -47,14 +47,15 @@
 
 	}
 
-	private static final String ODF_MANIFEST_VERSION = "1.2";
 	public static final String CONTAINER_XML = "META-INF/container.xml";
-	public static final String MANIFEST_XML = "META-INF/manifest.xml";
-
+	private static JAXBContext jaxbContext;
 	private static Logger logger = Logger.getLogger(ODFManifest.class
 			.getCanonicalName());
 
-	private static JAXBContext jaxbContext;
+	public static final String MANIFEST_XML = "META-INF/manifest.xml";
+
+	private static final String ODF_MANIFEST_VERSION = "1.2";
+	private static boolean warnedPrefixMapper;
 	public static boolean containsManifest(Bundle bundle) {
 		return Files.isRegularFile(manifestXmlPath(bundle));
 	}
@@ -69,6 +70,7 @@
 		Unmarshaller unmarshaller = getJaxbContext().createUnmarshaller();
 		return unmarshaller;
 	}
+
 	protected static synchronized JAXBContext getJaxbContext()
 			throws JAXBException {
 		if (jaxbContext == null) {
@@ -112,8 +114,6 @@
 		}
 	}
 
-	private org.purl.wf4ever.robundle.manifest.Manifest manifest;
-
 	private Bundle bundle;
 
 	// protected void prepareContainerXML() throws IOException {
@@ -198,9 +198,9 @@
 	//
 	// }
 
-	private ObjectFactory manifestFactory = new oasis.names.tc.opendocument.xmlns.manifest._1.ObjectFactory();
+	private org.purl.wf4ever.robundle.manifest.Manifest manifest;
 
-	private static boolean warnedPrefixMapper;
+	private ObjectFactory manifestFactory = new oasis.names.tc.opendocument.xmlns.manifest._1.ObjectFactory();
 
 	public ODFManifest(org.purl.wf4ever.robundle.manifest.Manifest manifest) {
 		this.manifest = manifest;
diff --git a/src/main/java/org/purl/wf4ever/robundle/utils/RecursiveCopyFileVisitor.java b/src/main/java/org/purl/wf4ever/robundle/utils/RecursiveCopyFileVisitor.java
index 5489e04..fea2157 100644
--- a/src/main/java/org/purl/wf4ever/robundle/utils/RecursiveCopyFileVisitor.java
+++ b/src/main/java/org/purl/wf4ever/robundle/utils/RecursiveCopyFileVisitor.java
@@ -64,9 +64,9 @@
 	private final CopyOption[] copyOptions;
 	private final Set<CopyOption> copyOptionsSet;
 	private final Path destination;
+	private boolean ignoreErrors;
 	private final LinkOption[] linkOptions;
 	private final Path source;
-	private boolean ignoreErrors;
 
 	RecursiveCopyFileVisitor(Path destination, Set<CopyOption> copyOptionsSet,
 			Path source) {
