diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index 17132e4..d6fa8bd 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -505,6 +505,9 @@
      *            : the next kmer
      */
     public void mergeWithFFKmer(int initialKmerSize, VKmerBytesWritable kmer) {
+    	if (lettersInKmer == 0 || kmer.lettersInKmer == 0) {
+    		throw new IllegalStateException("Trying to merge an empty kmer! merge: '" + this + "' with '" + kmer + "'.");
+    	}
         int preKmerLength = lettersInKmer;
         int preSize = bytesUsed;
         lettersInKmer += kmer.lettersInKmer - initialKmerSize + 1;
@@ -538,6 +541,9 @@
      *            : the next kmer
      */
     public void mergeWithFRKmer(int initialKmerSize, VKmerBytesWritable kmer) {
+    	if (lettersInKmer == 0 || kmer.lettersInKmer == 0) {
+    		throw new IllegalStateException("Trying to merge an empty kmer! merge: '" + this + "' with '" + kmer + "'.");
+    	}
         int preSize = bytesUsed;
         int preKmerLength = lettersInKmer;
         lettersInKmer += kmer.lettersInKmer - initialKmerSize + 1;
@@ -605,6 +611,9 @@
      *            : the previous kmer
      */
     public void mergeWithRRKmer(int initialKmerSize, VKmerBytesWritable preKmer) {
+    	if (lettersInKmer == 0 || preKmer.lettersInKmer == 0) {
+    		throw new IllegalStateException("Trying to merge an empty kmer! merge: '" + this + "' with '" + preKmer + "'.");
+    	}
         int preKmerLength = lettersInKmer;
         int preSize = bytesUsed;
         lettersInKmer += preKmer.lettersInKmer - initialKmerSize + 1;
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
index 850d24f..73ddff4 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
@@ -184,6 +184,7 @@
         Assert.assertEquals(text2, kmer2.toString());
 
         VKmerBytesWritable merge = new VKmerBytesWritable();
+        merge.setAsCopy(kmer1);
         merge.mergeWithFRKmer(kmerSize, kmer2);
         Assert.assertEquals(result, merge.toString());
 
@@ -221,6 +222,7 @@
         Assert.assertEquals(text2, kmer2.toString());
 
         VKmerBytesWritable merge = new VKmerBytesWritable();
+        merge.setAsCopy(kmer1);
         merge.mergeWithRFKmer(kmerSize, kmer2);
         Assert.assertEquals(result, merge.toString());
 
