public void save(String filename)
	{
		/*
		 * Create the object output stream for serialization. We are wrapping a FileOutputStream since we want to
		 * save to disk. You can also save to socket streams or any other kind of stream.
		 */
		try ( ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename)); )
		{
			/*
			 * The only real call we need. The stream buffers the output and reuses data, so if you are serializing very
			 * frequently, then the object values might not actually change because the old serialized object is being
			 * reused.
			 * 
			 * To fix this you can try writeUnshared() or you can reset the stream. out.reset();
			 */
			out.writeObject(this);
		}
		catch (FileNotFoundException e)
		{
			myLogger.log(Level.SEVERE, "Save file not found: " + filename, e);
		}
		catch (IOException e)
		{
			myLogger.log(Level.SEVERE, "General IO Error on saving: "
					+ filename, e);
		}

	}