diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/connectionmanager/xmlrpc/XmlRpcClientManager.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/connectionmanager/xmlrpc/XmlRpcClientManager.java
index b22d5ed..b83ab36 100644
--- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/connectionmanager/xmlrpc/XmlRpcClientManager.java
+++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/connectionmanager/xmlrpc/XmlRpcClientManager.java
@@ -269,7 +269,7 @@
 					fragmentIndex
 				});
 				for (final String s : envelope.getFragment()) {
-					writer.write(s + "\n"); //$NON-NLS-1$
+					writer.write(s + System.getProperty("line.separator")); //$NON-NLS-1$
 				}
 				fragmentIndex += 1;
 			} while (!envelope.isLast());
diff --git a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/impl/persistent/OperationEmitter.java b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/impl/persistent/OperationEmitter.java
index 6a38064..36136bd 100644
--- a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/impl/persistent/OperationEmitter.java
+++ b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/impl/persistent/OperationEmitter.java
@@ -150,7 +150,7 @@
 	/**
 	 * Since an XML Resource needs exactly one root object, we have to write a dummy object to the stream.
 	 *
-	 * @param pos the outputstream
+	 * @param pos the {@link PipedOutputStream}
 	 * @throws IOException in case there is a problem during write
 	 */
 	private static void writeDummyResourceToStream(PipedOutputStream pos) throws IOException {
@@ -224,6 +224,7 @@
 
 		if (currentOpIndex < 0) {
 			try {
+				writeDummyResourceToStream(pos);
 				pos.close();
 			} catch (final IOException ex) {
 				ModelUtil.logException(ex);
diff --git a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java
index 1e4e932..5ea8e7f 100644
--- a/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java
+++ b/bundles/org.eclipse.emf.emfstore.server.model/src/org/eclipse/emf/emfstore/internal/server/model/versioning/operations/util/ChangePackageUtil.java
@@ -14,12 +14,16 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.LineIterator;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.emfstore.internal.common.model.util.FileUtil;
@@ -81,30 +85,8 @@
 
 			private int fragmentIndex;
 			private int count;
-			private boolean isInitialized;
 			private ChangePackageEnvelope envelope;
-
-			private void init() {
-				int leafSizeCounter = 0;
-				final ESCloseableIterable<AbstractOperation> operations = changePackage.operations();
-				try {
-					for (final AbstractOperation operation : operations.iterable()) {
-						final int countLeafOperations = countLeafOperations(operation);
-						leafSizeCounter += countLeafOperations;
-						if (leafSizeCounter < changePackageFragmentSize) {
-							continue;
-						}
-						leafSizeCounter = 0;
-						count += 1;
-					}
-				} finally {
-					operations.close();
-				}
-				if (leafSizeCounter != 0 || count == 0) {
-					count += 1;
-				}
-				isInitialized = true;
-			}
+			private boolean isInitialized;
 
 			public boolean hasNext() {
 
@@ -117,34 +99,72 @@
 					envelope.setFragmentCount(count);
 				}
 
-				int envelopeSize = 0;
-
-				FileReader reader;
-				try {
-					reader = new FileReader(new File(changePackage.getTempFilePath()));
-					final LineIterator lineIterator = new LineIterator(reader);
-					final StringBuffer b = new StringBuffer();
-
-					while (envelopeSize < changePackageFragmentSize && lineIterator.hasNext()) {
-						final String nextLine = lineIterator.next();
-						envelope.getFragment().add(nextLine);
-						b.append(nextLine + "\n"); //$NON-NLS-1$
-						envelopeSize += 1;
-					}
-					b.toString();
-				} catch (final FileNotFoundException ex) {
-					throw new IllegalStateException(ex);
-				}
+				final List<String> readLines = readLines(fragmentIndex * changePackageFragmentSize, changePackage,
+					changePackageFragmentSize);
+				envelope.getFragment().addAll(readLines);
 
 				envelope.setFragmentIndex(fragmentIndex);
 
-				if (envelope.getFragment().size() == changePackageFragmentSize || fragmentIndex == 0) {
+				if (!envelope.getFragment().isEmpty() || fragmentIndex == 0) {
 					return true;
 				}
 
 				return false;
 			}
 
+			private void init() {
+				LineNumberReader lineNumberReader = null;
+				try {
+					lineNumberReader = new LineNumberReader(new FileReader(new File(changePackage.getTempFilePath())));
+					lineNumberReader.skip(Long.MAX_VALUE);
+					final int lines = lineNumberReader.getLineNumber() + 1;
+					count = lines / changePackageFragmentSize;
+					if (lines % changePackageFragmentSize != 0) {
+						count += 1;
+					}
+				} catch (final FileNotFoundException ex) {
+					throw new IllegalStateException(ex);
+				} catch (final IOException ex) {
+					throw new IllegalStateException(ex);
+				} finally {
+					IOUtils.closeQuietly(lineNumberReader);
+				}
+				isInitialized = true;
+			}
+
+			private List<String> readLines(int from, final FileBasedChangePackage changePackage,
+				final int changePackageFragmentSize) {
+
+				int readLines = 0;
+				FileReader reader;
+				final List<String> lines = new ArrayList<String>();
+
+				try {
+					reader = new FileReader(new File(changePackage.getTempFilePath()));
+					final LineIterator lineIterator = new LineIterator(reader);
+					int read = 0;
+
+					while (read < from) {
+						if (!lineIterator.hasNext()) {
+							return lines;
+						}
+						lineIterator.next();
+						read += 1;
+					}
+
+					while (readLines < changePackageFragmentSize && lineIterator.hasNext()) {
+						final String nextLine = lineIterator.next();
+						readLines += 1;
+						lines.add(nextLine);
+					}
+
+				} catch (final FileNotFoundException ex) {
+					throw new IllegalStateException(ex);
+				}
+
+				return lines;
+			}
+
 			public ChangePackageEnvelope next() {
 				if (envelope == null) {
 					final boolean hasNext = hasNext();
diff --git a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java
index ee810dd..151d731 100644
--- a/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java
+++ b/bundles/org.eclipse.emf.emfstore.server/src/org/eclipse/emf/emfstore/internal/server/core/subinterfaces/ChangePackageFragmentUploadAdapter.java
@@ -60,9 +60,9 @@
 		}
 		FileWriter writer = null;
 		try {
-			writer = new FileWriter(file);
+			writer = new FileWriter(file, true);
 			for (final String str : fragment) {
-				writer.write(str + "\n"); //$NON-NLS-1$
+				writer.write(str + System.getProperty("line.separator")); //$NON-NLS-1$
 			}
 		} catch (final IOException ex) {
 			throw new ESException(Messages.ChangePackageFragmentUploadAdapter_SplittingFailed, ex);
