Changed Star.Load to a factory.
Changed Star.Load to a factory.
Added some documentation (not much).
Rebuilt the binaries.

file:a/Galaxy.cs -> file:b/Galaxy.cs
--- a/Galaxy.cs
+++ b/Galaxy.cs
@@ -122,12 +122,11 @@
 		{
 			int offset = 0;
 			UInt16 ReadCode = BitConverter.ToUInt16(stream, offset);
-			if (ReadCode != SaveCode) { throw new Exception("File not a valid galaxy blob."); }
+			if (ReadCode != SaveCode) { throw new Exception("File not a valid galaxy blob." + ReadCode); }
 			offset += sizeof(UInt16);
 			while (offset < stream.Length)
 			{
-				Star star = new Star();
-				Star.Load(stream, ref offset, ref star);
+				Star star = Star.Load(stream, ref offset);
 				this.AddStar(star, star.getID());
 			}
 		}

file:a/Star.cs -> file:b/Star.cs
--- a/Star.cs
+++ b/Star.cs
@@ -63,7 +63,14 @@
 		{
 			ColorIndex = NewIndex;
 		}
-		
+
+		/// <summary>
+		/// Writes a star to the specified stream.
+		/// </summary>
+		/// <param name='stream'>
+		/// Save file stream passed from Galaxy.Save.
+		/// </param>
+		/// 
 		public void Save(FileStream stream)
 		{
 			stream.Write(BitConverter.GetBytes(SaveCode), 0, sizeof(UInt16));
@@ -73,9 +80,19 @@
 			stream.Write(BitConverter.GetBytes(coords.getZ()), 0, sizeof(double));
 			stream.Write(BitConverter.GetBytes(ColorIndex), 0, sizeof(uint));
 		}
-		
-		public static void Load(byte[] stream, ref int offset, ref Star star)
+
+		/// <summary>
+		/// Creates a new star from data in the specified stream at the specified offset.
+		/// </summary>
+		/// <param name='stream'>
+		/// Stream from Galaxy.Load.
+		/// </param>
+		/// <param name='offset'>
+		/// Offset from Galaxy.Load.
+		/// </param>
+		public static Star Load(byte[] stream, ref int offset)
 		{
+			Star star = new Star();
 			UInt16 ReadCode = BitConverter.ToUInt16(stream, offset);
 			if (ReadCode != SaveCode) { throw new Exception("we can't handle anything other than stars yet"); }
 			offset += sizeof(UInt16);
@@ -93,13 +110,15 @@
 			star.setID(ReadID);
 			star.setCoords(ReadX, ReadY, ReadZ);
 			star.setColorIndex(ReadColorIndex);
+
+			return star;
 		}
 		
 		private CartesianCoords coords = null;
 		private UInt64 id;
 		private uint ColorIndex;
 		private static UInt16 SaveCode = GlobalParameters.SaveCodes["Star"];
-		private static Color[] ValidColors = new Color[] {Color.White, Color.Red, Color.Yellow, Color.Orange, Color.OrangeRed, Color.Blue, Color.Violet, Color.BlueViolet, Color.LightBlue, Color.Green, Color.YellowGreen};
+		private static Color[] ValidColors = new Color[] {Color.White, Color.Yellow, Color.Red, Color.Orange, Color.OrangeRed, Color.LightBlue, Color.Violet, Color.Blue, Color.BlueViolet, Color.Green, Color.YellowGreen};
 	}
 }
 

 Binary files a/bin/Release/CleanExceptionHandler.dll and b/bin/Release/CleanExceptionHandler.dll differ
 Binary files a/bin/Release/NDesk.Options.dll and b/bin/Release/NDesk.Options.dll differ
 Binary files a/bin/Release/galaxy_generator.exe and b/bin/Release/galaxy_generator.exe differ