The only differences I can find: 1. The names of the arguments in the readObject and writeObject methods in the B class. Instead of "in" and "out" I use "aInputStream" and "aOutputStream". Shouldn't matter, right? 2. The order in which classes are declared. I have A and B declared before Main, the solution has them after. Again, this shouldn't matter. 3. I use "this.nameA" instead of just "nameA" in the two methods. I have run it without "this" and it has the same error, so that isn't it. I generally prefer including "this" when accurate because it allows a quick glance to recognize if the variable belongs to the object or just a temporary one I created in the method. I have been looking over and over everything else, and it appears to be identical to the solution. Any ideas? Oh, and the notserializableexception is generated on line 40 (the defaultWriteObject line).