diff --git a/src/jvm/clojure/lang/Cons.java b/src/jvm/clojure/lang/Cons.java
index ecb82a9..8b2962a 100644
--- a/src/jvm/clojure/lang/Cons.java
+++ b/src/jvm/clojure/lang/Cons.java
@@ -11,8 +11,9 @@
 /* rich Mar 25, 2006 11:01:29 AM */
 
 package clojure.lang;
+import java.io.Serializable;
 
-final public class Cons extends ASeq{
+final public class Cons extends ASeq implements Serializable{
 
 private final Object _first;
 private final ISeq _more;
diff --git a/src/jvm/clojure/lang/PersistentHashMap.java b/src/jvm/clojure/lang/PersistentHashMap.java
index 4fae3f3..53ba054 100644
--- a/src/jvm/clojure/lang/PersistentHashMap.java
+++ b/src/jvm/clojure/lang/PersistentHashMap.java
@@ -14,6 +14,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
+import java.io.Serializable;
 
 /*
  A persistent rendition of Phil Bagwell's Hash Array Mapped Trie
@@ -297,7 +298,7 @@ static interface INode{
 	INode without(AtomicReference<Thread> edit, int shift, int hash, Object key, Box removedLeaf);
 }
 
-final static class ArrayNode implements INode{
+final static class ArrayNode implements INode, Serializable{
 	int count;
 	final INode[] array;
 	final AtomicReference<Thread> edit;
@@ -462,7 +463,7 @@ final static class ArrayNode implements INode{
 	}
 }
 
-final static class BitmapIndexedNode implements INode{
+final static class BitmapIndexedNode implements INode, Serializable{
 	static final BitmapIndexedNode EMPTY = new BitmapIndexedNode(null, 0, new Object[0]);
 	
 	int bitmap;
@@ -704,7 +705,7 @@ final static class BitmapIndexedNode implements INode{
 	}
 }
 
-final static class HashCollisionNode implements INode{
+final static class HashCollisionNode implements INode, Serializable {
 
 	final int hash;
 	int count;
@@ -1039,4 +1040,4 @@ static final class NodeSeq extends ASeq {
 	}
 }
 
-}
\ No newline at end of file
+}
diff --git a/src/jvm/clojure/lang/PersistentList.java b/src/jvm/clojure/lang/PersistentList.java
index 477d1cb..ac996b1 100644
--- a/src/jvm/clojure/lang/PersistentList.java
+++ b/src/jvm/clojure/lang/PersistentList.java
@@ -11,8 +11,9 @@
 package clojure.lang;
 
 import java.util.*;
+import java.io.Serializable;
 
-public class PersistentList extends ASeq implements IPersistentList, IReduce, List, Counted{
+public class PersistentList extends ASeq implements IPersistentList, IReduce, List, Counted, Serializable{
 
 private final Object _first;
 private final IPersistentList _rest;
@@ -125,7 +126,7 @@ public Object reduce(IFn f, Object start) throws Exception{
 }
 
 
-    static class EmptyList extends Obj implements IPersistentList, List, ISeq, Counted{
+    static class EmptyList extends Obj implements IPersistentList, List, ISeq, Counted, Serializable{
 
 	public int hashCode(){
 		return 1;
diff --git a/src/jvm/clojure/lang/PersistentQueue.java b/src/jvm/clojure/lang/PersistentQueue.java
index 655b3e4..8198a36 100644
--- a/src/jvm/clojure/lang/PersistentQueue.java
+++ b/src/jvm/clojure/lang/PersistentQueue.java
@@ -13,6 +13,7 @@ package clojure.lang;
 import java.util.Collection;
 import java.util.Iterator;
 //import java.util.concurrent.ConcurrentLinkedQueue;
+import java.io.Serializable;
 
 /**
  * conses onto rear, peeks/pops from front
@@ -21,7 +22,7 @@ import java.util.Iterator;
  * so no reversing or suspensions required for persistent use
  */
 
-public class PersistentQueue extends Obj implements IPersistentList, Collection{
+public class PersistentQueue extends Obj implements IPersistentList, Collection, Serializable{
 
 final public static PersistentQueue EMPTY = new PersistentQueue(null, null, null);
 
diff --git a/src/jvm/clojure/lang/PersistentVector.java b/src/jvm/clojure/lang/PersistentVector.java
index 878d571..04ec13d 100644
--- a/src/jvm/clojure/lang/PersistentVector.java
+++ b/src/jvm/clojure/lang/PersistentVector.java
@@ -14,10 +14,11 @@ package clojure.lang;
 
 import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
+import java.io.Serializable;
 
 public class PersistentVector extends APersistentVector implements IObj, IEditableCollection{
 
-static class Node{
+static class Node implements Serializable{
 	final AtomicReference<Thread> edit;
 	final Object[] array;
 
