Index: /trunk/nv/array2d.hh
===================================================================
--- /trunk/nv/array2d.hh	(revision 131)
+++ /trunk/nv/array2d.hh	(revision 132)
@@ -36,49 +36,49 @@
 
 		/**
-		 *Creates a new 2D array.
+		 * Creates a new 2D array.
 		 */
 		array2d() : m_size(), m_data( nullptr ) {}
 
 		/**
-		 *Creates a new 2D array.
-		 *
-		 *@param asize The dimensions of the new array.
+		 * Creates a new 2D array.
+		 *
+		 * @param asize The dimensions of the new array.
 		 */
 		array2d( const ivec2& asize ) : m_size(), m_data( nullptr ) { resize( asize ); }
 
 		/**
-		 *Creates a new 2D array.
-		 *
-		 *@param asize_x The width of the new array.
-		 *@param asize_y The height of the new array.
+		 * Creates a new 2D array.
+		 *
+		 * @param asize_x The width of the new array.
+		 * @param asize_y The height of the new array.
 		 */
 		array2d( const sint32 asize_x, const sint32 asize_y ) : m_size(), m_data( nullptr ) { resize( new ivec2( asize_x, asize_y ) ); }
 		
 		/**
-		 *Gets the dimensions of the array.
-		 *
-		 *@returns The size of the array.
+		 * Gets the dimensions of the array.
+		 *
+		 * @returns The size of the array.
 		 */
 		const ivec2& size() const { return m_size; }
 
 		/**
-		 *Gets a pointer to the data in the array.
-		 *
-		 *@returns A pointer to the data in the array.
+		 * Gets a pointer to the data in the array.
+		 *
+		 * @returns A pointer to the data in the array.
 		 */
 		pointer data() { return m_data; }
 
 		/**
-		 *Gets a constant pointer to the data in the array.
-		 *
-		 *@returns A constant pointer to the data in the array.
+		 * Gets a constant pointer to the data in the array.
+		 *
+		 * @returns A constant pointer to the data in the array.
 		 */
 		const_pointer data() const { return m_data; }
 
 		/**
-		 *Changes the dimensions of the array.
-		 *
-		 *@param new_size The new dimensions of the array.
-		 *@param preserve True to keep as much of the existing data as will fit in the new array, False to discard the existing data.
+		 * Changes the dimensions of the array.
+		 *
+		 * @param new_size The new dimensions of the array.
+		 * @param preserve True to keep as much of the existing data as will fit in the new array, False to discard the existing data.
 		 */
 		void resize( const ivec2& new_size, bool preserve = false ) 
@@ -110,28 +110,28 @@
 
 		/**
-		 *Gets a pointer to the start of the array.
-		 *
-		 *@returns A pointer to the first position in the array.
+		 * Gets a pointer to the start of the array.
+		 *
+		 * @returns A pointer to the first position in the array.
 		 */
 		iterator       begin()       { return m_data; }
 
 		/**
-		 *Gets a constant pointer to the start of the array.
-		 *
-		 *@returns A constant pointer to the first position in the array.
+		 * Gets a constant pointer to the start of the array.
+		 *
+		 * @returns A constant pointer to the first position in the array.
 		 */
 		const_iterator begin() const { return m_data; }
 
 		/**
-		 *Gets a pointer to the end of the array.
-		 *
-		 *@returns A pointer to the end of the array.
+		 * Gets a pointer to the end of the array.
+		 *
+		 * @returns A pointer to the end of the array.
 		 */
 		iterator       end()         { return m_data + ( m_size.x * m_size.y ); }
 
 		/**
-		 *Gets a constant pointer to the end of the array.
-		 *
-		 *@returns A constant pointer to the end of the array.
+		 * Gets a constant pointer to the end of the array.
+		 *
+		 * @returns A constant pointer to the end of the array.
 		 */
 		const_iterator end() const   { return m_data + ( m_size.x * m_size.y ); }
@@ -139,9 +139,9 @@
 
 		/**
-		 *Looks up a position by X and Y value.
-		 *
-		 *@param x The X position of the array to look up.
-		 *@param y The Y position of the array to look up.
-		 *@returns A reference to the data at the indicated position.
+		 * Looks up a position by X and Y value.
+		 *
+		 * @param x The X position of the array to look up.
+		 * @param y The Y position of the array to look up.
+		 * @returns A reference to the data at the indicated position.
 		 */
 		inline const_reference operator() ( sint32 x, sint32 y ) const
@@ -152,9 +152,9 @@
 
 		/**
-		 *Looks up a position by X and Y value.
-		 *
-		 *@param x The X position of the array to look up.
-		 *@param y The Y position of the array to look up.
-		 *@returns A reference to the data at the indicated position.
+		 * Looks up a position by X and Y value.
+		 *
+		 * @param x The X position of the array to look up.
+		 * @param y The Y position of the array to look up.
+		 * @returns A reference to the data at the indicated position.
 		 */
 		inline reference operator() ( sint32 x, sint32 y )
@@ -165,8 +165,8 @@
 
 		/**
-		 *Looks up the given position in the array.
-		 *
-		 *@param c The position to look up.
-		 *@returns A reference to the data at the indicated position.
+		 * Looks up the given position in the array.
+		 *
+		 * @param c The position to look up.
+		 * @returns A reference to the data at the indicated position.
 		 */
 		inline const_reference operator[] ( const ivec2& c ) const 
@@ -177,8 +177,8 @@
 
 		/**
-		 *Looks up the given position in the array.
-		 *
-		 *@param c The position to look up.
-		 *@returns A reference to the data at the indicated position.
+		 * Looks up the given position in the array.
+		 *
+		 * @param c The position to look up.
+		 * @returns A reference to the data at the indicated position.
 		 */
 		inline reference operator[] ( const ivec2& c )
@@ -189,7 +189,7 @@
 
 		/**
-		 *Returns a copy of this array in a new instance.
-		 *
-		 *@returns An independent copy of this array.
+		 * Returns a copy of this array in a new instance.
+		 *
+		 * @returns An independent copy of this array.
 		 */
 		array2d<T> clone()
@@ -204,19 +204,20 @@
 
 		/**
-		 *Returns an array that represents a subset of the data in this array.
-		 *
-		 *@param start The upper and left bounds of data to retrieve.
-		 *@param size The width and height of the data to retrieve.
-		 *@returns A new 2D array containing the subset of data within the bounds specified.
+		 * Returns an array that represents a subset of the data in this array.
+		 *
+		 * @param start The upper and left bounds of data to retrieve.
+		 * @param size The width and height of the data to retrieve.
+		 * @returns A new 2D array containing the subset of data within the bounds specified.
 		 */
 		array2d<T> get_sub_array( const ivec2& start, const ivec2& size ) {	return get_sub_array( start.x, start.y, size.x, size.y ); }
-		/**
-		 *Returns an array that represents a subset of the data in this array.
-		 *
-		 *@param start_x The left bound of the data to retrieve.
-		 *@param start_y The upper bound of the data to retrieve.
-		 *@param size_x The width of the data to retrieve.
-		 *@param size_y The height of the data to retrieve.
-		 *@returns A new 2D array containing the subset of data within the bounds specified.
+
+		/**
+		 * Returns an array that represents a subset of the data in this array.
+		 *
+		 * @param start_x The left bound of the data to retrieve.
+		 * @param start_y The upper bound of the data to retrieve.
+		 * @param size_x The width of the data to retrieve.
+		 * @param size_y The height of the data to retrieve.
+		 * @returns A new 2D array containing the subset of data within the bounds specified.
 		 */
 		array2d<T> get_sub_array( const sint32 start_x, const sint32 start_y, const sint32 size_x, const sint32 size_y)
@@ -239,8 +240,8 @@
 
 		/**
-		 *Fills this array with another array.
-		 *
-		 *@param source The array to fill with.  If it does not fit in the destination it will be truncated.
-		 *@param dest_start The upper and left bounds of the data to fill.
+		 * Fills this array with another array.
+		 *
+		 * @param source The array to fill with.  If it does not fit in the destination it will be truncated.
+		 * @param dest_start The upper and left bounds of the data to fill.
 		 */
 		void set_sub_array( const array2d<T> source, const ivec2& dest_start )
@@ -250,9 +251,9 @@
 
 		/**
-		 *Fills this array with a subset of another array.
-		 *
-		 *@param source The arrya to fill with.  If it does not fit in the destination it will be truncated.
-		 *@param dest_start The upper and left bounds of the data to fill.
-		 *@param size The size of the area to copy over.
+		 * Fills this array with a subset of another array.
+		 *
+		 * @param source The arrya to fill with.  If it does not fit in the destination it will be truncated.
+		 * @param dest_start The upper and left bounds of the data to fill.
+		 * @param size The size of the area to copy over.
 		 */
 		void set_sub_array( const array2d<T> source, const ivec2& dest_start, const ivec2& size )
@@ -263,10 +264,10 @@
 
 		/**
-		 *Fills this array with a subset of another array.
-		 *
-		 *@param source The array to fill with.  If it does not fit in the destination it will be truncated.
-		 *@param dest_start The upper and left bounds of the data to fill.
-		 *@param source_start The upper and left bounds of the source to fill with.
-		 *@param size The size of the area to copy over.
+		 * Fills this array with a subset of another array.
+		 *
+		 * @param source The array to fill with.  If it does not fit in the destination it will be truncated.
+		 * @param dest_start The upper and left bounds of the data to fill.
+		 * @param source_start The upper and left bounds of the source to fill with.
+		 * @param size The size of the area to copy over.
 		 */
 		void set_sub_array( const array2d<T> source, const ivec2& dest_start, const ivec2& source_start, const ivec2& size )
@@ -276,9 +277,9 @@
 
 		/**
-		 *Fills this array with another array.
-		 *
-		 *@param source The array to fill with.  If it does not fit in the area to fill, it will be truncated.
-		 *@param dest_start_x The left bound of the data to fill.
-		 *@param dest_start_y The upper bound of the data to fill.
+		 * Fills this array with another array.
+		 *
+		 * @param source The array to fill with.  If it does not fit in the area to fill, it will be truncated.
+		 * @param dest_start_x The left bound of the data to fill.
+		 * @param dest_start_y The upper bound of the data to fill.
 		 */
 		void set_sub_array( const array2d<T> source, const sint32 dest_start_x, const sint32 dest_start_y )
@@ -288,11 +289,11 @@
 
 		/**
-		 *Fills this array with another array.
-		 *
-		 *@param source The array to fill with.  If it does not fit in the area to fill, it will be truncated.
-		 *@param dest_start_x The left bound of the data to fill.
-		 *@param dest_start_y The upper bound of the data to fill.
-		 *@param size_x The width of the area to copy over.
-		 *@param size_y The height of the area to copy over.
+		 * Fills this array with another array.
+		 *
+		 * @param source The array to fill with.  If it does not fit in the area to fill, it will be truncated.
+		 * @param dest_start_x The left bound of the data to fill.
+		 * @param dest_start_y The upper bound of the data to fill.
+		 * @param size_x The width of the area to copy over.
+		 * @param size_y The height of the area to copy over.
 		 */
 		void set_sub_array( const array2d<T> source, const sint32 dest_start_x, const sint32 dest_start_y, const sint32 size_x, const sint32 size_y )
@@ -302,13 +303,13 @@
 
 		/**
-		 *Fills this array with a subset of another array.
-		 *
-		 *@param source The array to fill with.  If it does not fit in the area to fill, it will be truncated.
-		 *@param dest_start_x The left bound of the data to fill.
-		 *@param dest_start_y The upper bound of the data to fill.
-		 *@param source_start_x The left bound of the source to fill with.
-		 *@param source_start_y The upper bound of the source to fill with.
-		 *@param size_x The width of the area to copy over.
-		 *@param size_y The height of the area to copy over.
+		 * Fills this array with a subset of another array.
+		 *
+		 * @param source The array to fill with.  If it does not fit in the area to fill, it will be truncated.
+		 * @param dest_start_x The left bound of the data to fill.
+		 * @param dest_start_y The upper bound of the data to fill.
+		 * @param source_start_x The left bound of the source to fill with.
+		 * @param source_start_y The upper bound of the source to fill with.
+		 * @param size_x The width of the area to copy over.
+		 * @param size_y The height of the area to copy over.
 		 */
 		void set_sub_array( const array2d<T> source, const sint32 dest_start_x, const sint32 dest_start_y, const sint32 source_start_x, const sint32 source_start_y, const sint32 size_x, const sint32 size_y )
@@ -342,5 +343,5 @@
 
 		/**
-		 *Destructor.
+		 * Destructor.
 		 */
 		~array2d()
Index: /trunk/nv/gfx/texture_font.hh
===================================================================
--- /trunk/nv/gfx/texture_font.hh	(revision 131)
+++ /trunk/nv/gfx/texture_font.hh	(revision 132)
@@ -27,13 +27,13 @@
 
 		/**
-		 *Creates a new texture_glyph.
+		 * Creates a new texture_glyph.
 		 */
 		texture_glyph();
 
 		/**
-		 *Gets the kerning space between this character and the requested character.
+		 * Gets the kerning space between this character and the requested character.
 		 *
-		 *@param other The character to get the spacing for.
-		 *@returns The amount of space for kerning.
+		 * @param other The character to get the spacing for.
+		 * @returns The amount of space for kerning.
 		 */
 		float get_kerning( const uint16 other ); 
Index: /trunk/nv/gui/gui_element.hh
===================================================================
--- /trunk/nv/gui/gui_element.hh	(revision 131)
+++ /trunk/nv/gui/gui_element.hh	(revision 132)
@@ -28,169 +28,169 @@
 
 			/**
-			 *Creates a new GUI element.
+			 * Creates a new GUI element.
 			 */
 			element() : object() {}
 
 			/**
-			 *Creates a new GUI element with the give root node and postioning data.
-			 *
-			 *@param aroot The root object that will be this object's parent.
-			 *@param r The rectangle representing the position and size of this element.
+			 * Creates a new GUI element with the give root node and postioning data.
+			 *
+			 * @param aroot The root object that will be this object's parent.
+			 * @param r The rectangle representing the position and size of this element.
 			 */
 			element( root* aroot, const rectangle& r );
 
 			/**
-			 *Gets the deepest child element that contains the indicated point.
-			 *
-			 *@param p The position to check.
-			 *@returns The last child element that contains the given point.
+			 * Gets the deepest child element that contains the indicated point.
+			 *
+			 * @param p The position to check.
+			 * @returns The last child element that contains the given point.
 			 */
 			element* get_element( const position& p );
 
 			/**
-			 *Event handler for update events.  Calls on_update for all affected children.
-			 *
-			 *@param elapsed Time since last update.
+			 * Event handler for update events.  Calls on_update for all affected children.
+			 *
+			 * @param elapsed Time since last update.
 			 */
 			virtual void on_update( uint32 elapsed );
 
 			/**
-			 *Event handler for draw events.  Calls on_draw for all affected children.
+			 * Event handler for draw events.  Calls on_draw for all affected children.
 			 */
 			virtual void on_draw();
 
 			/**
-			 *Event handler for IO events.  Class on_event for all affected children.
-			 *
-			 *@param event The event data.
-			 *@returns ???
+			 * Event handler for IO events.  Calls on_event for all affected children.
+			 *
+			 * @param event The event data.
+			 * @returns ???
 			 */
 			virtual bool on_event( const io_event& event );
 
 			/**
-			 *Checks if this element contains the given point.
-			 *
-			 *@param p The point to check.
-			 *@returns True if the point is within the region of the element, false otherwise.
+			 * Checks if this element contains the given point.
+			 *
+			 * @param p The point to check.
+			 * @returns True if the point is within the region of the element, false otherwise.
 			 */
 			virtual bool contains( const position& p ) const;
 
 			/**
-			 *Sets the position and size of this element relative to its parent.
-			 *
-			 *@param r The new position and size of the element.
+			 * Sets the position and size of this element relative to its parent.
+			 *
+			 * @param r The new position and size of the element.
 			 */
 			virtual void set_relative( const rectangle& r );
 
 			/**
-			 *Sets the position of this element relative to its parent.
-			 *
-			 *@param p The new position of the element.
+			 * Sets the position of this element relative to its parent.
+			 *
+			 * @param p The new position of the element.
 			 */
 			virtual void set_relative( const position& p );
 
 			/**
-			 *Gets the position and size of the element relative to its parent.
-			 *
-			 *@returns The element's position and size relative to its parent.
+			 * Gets the position and size of the element relative to its parent.
+			 *
+			 * @returns The element's position and size relative to its parent.
 			 */
 			virtual const rectangle& get_relative() const { return m_relative; }
 
 			/**
-			 *Gets the position and size of the element relative to the root (window).
-			 *
-			 *@returns The element's position and size relative to the root (window).
+			 * Gets the position and size of the element relative to the root (window).
+			 *
+			 * @returns The element's position and size relative to the root (window).
 			 */
 			virtual const rectangle& get_absolute() const { return m_absolute; }
 
 			/**
-			 *Gets the parent element of this element.
-			 *
-			 *@returns The parent element.
+			 * Gets the parent element of this element.
+			 *
+			 * @returns The parent element.
 			 */
 			virtual element* get_parent() const { return (element*)m_parent; }
 
 			/**
-			 *Gets whether this element is currently accepting events.
-			 *
-			 *@returns True if the element is receiving events, false otherwise.
+			 * Gets whether this element is currently accepting events.
+			 *
+			 * @returns True if the element is receiving events, false otherwise.
 			 */
 			virtual bool is_enabled() const { return m_enabled; }
 
 			/**
-			 *Gets whether this element is currently visible.
-			 *
-			 *@returns True if the element is visible, false otherwise.
+			 * Gets whether this element is currently visible.
+			 *
+			 * @returns True if the element is visible, false otherwise.
 			 */
 			virtual bool is_visible() const { return m_visible; }
 
 			/**
-			 *Gets whether this element needs to be redrawn.
-			 *
-			 *@returns True if the element needs to be redrawn, false if not.
+			 * Gets whether this element needs to be redrawn.
+			 *
+			 * @returns True if the element needs to be redrawn, false if not.
 			 */
 			virtual bool is_dirty()   const { return m_dirty; }
 
 			/**
-			 *Sets whether this element is currently accepting events.
-			 *
-			 *@param value True to allow the element and its children to receive events, false to disable.
+			 * Sets whether this element is currently accepting events.
+			 *
+			 * @param value True to allow the element and its children to receive events, false to disable.
 			 */
 			virtual void set_enabled( bool value ) { m_enabled = value; }
 
 			/**
-			 *Sets whether this element is visible on the screen.
-			 *
-			 *@param value True to display the element and its children, false to hide it and its children.
+			 * Sets whether this element is visible on the screen.
+			 *
+			 * @param value True to display the element and its children, false to hide it and its children.
 			 */
 			virtual void set_visible( bool value ) { m_visible = value; }
 
 			/**
-			 *Sets whether this element needs to be redrawn.
-			 *
-			 *@param value True to request that the element and its children be redrawn, false if not.
+			 * Sets whether this element needs to be redrawn.
+			 *
+			 * @param value True to request that the element and its children be redrawn, false if not.
 			 */
 			virtual void set_dirty( bool value )   { m_dirty   = value; }
 
 			/**
-			 *Gets the text associated with this element.
-			 *
-			 *@returns A string containing the associated text.
+			 * Gets the text associated with this element.
+			 *
+			 * @returns A string containing the associated text.
 			 */
 			virtual const string& get_text() const { return m_text; }
 
 			/**
-			 *Sets the text associated with this element.
-			 *
-			 *@param text The new text to associate with this element.
+			 * Sets the text associated with this element.
+			 *
+			 * @param text The new text to associate with this element.
 			 */
 			virtual void set_text( const string& text ) { m_text = text; m_dirty = true; }
 
 			/**
-			 *Gets the class name associated with this element.
-			 *
-			 *@returns A string containing the class name of this element.
+			 * Gets the class name associated with this element.
+			 *
+			 * @returns A string containing the class name of this element.
 			 */
 			virtual const string& get_class() const { return m_class; }
 
 			/**
-			 *sets the class name associated with this element.
-			 *
-			 *@param class_ The new class name.
+			 * sets the class name associated with this element.
+			 *
+			 * @param class_ The new class name.
 			 */
 			virtual void set_class( const string& class_ ) { m_class = class_; m_dirty = true; }
 
 			/**
-			 *Recalcuates the absolute position of the element and the element's children.
+			 * Recalcuates the absolute position of the element and the element's children.
 			 */
 			virtual void recalculate_absolute();
 
 			/**
-			 *Recalculates the aboslute position of the element's children.
+			 * Recalculates the aboslute position of the element's children.
 			 */
 			virtual void recalculate_absolute_children();
 
 			/**
-			 *Destroys the element.
+			 * Destroys the element.
 			 */
 			virtual ~element();
Index: /trunk/nv/io_event.hh
===================================================================
--- /trunk/nv/io_event.hh	(revision 131)
+++ /trunk/nv/io_event.hh	(revision 132)
@@ -131,31 +131,31 @@
 
 	/**
-	 *Gets the name of the key given the code.
+	 * Gets the name of the key given the code.
 	 *
-	 *@param key The code value of the key.
-	 *@returns The name of the key.
+	 * @param key The code value of the key.
+	 * @returns The name of the key.
 	 */
 	const char* get_key_name( key_code key );
 
 	/**
-	 *Gets the name of the mouse button given the code.
+	 * Gets the name of the mouse button given the code.
 	 *
-	 *@param button The code value of the mouse button.
-	 *@returns The name of the button.
+	 * @param button The code value of the mouse button.
+	 * @returns The name of the button.
 	 */
 	const char* get_mouse_name( mouse_code button );
 
 	/**
-	 *Gets the name of the IO event given the code.
+	 * Gets the name of the IO event given the code.
 	 *
-	 *@param event The code value of the IO event.
-	 *@returns The name of the event.
+	 * @param event The code value of the IO event.
+	 * @returns The name of the event.
 	 */
 	const char* get_io_event_name( io_event_code event );
 
 	/**
-	 *Registers all events to the specified database.
+	 * Registers all events to the specified database.
 	 *
-	 *@param db The database to store all event data in.
+	 * @param db The database to store all event data in.
 	 */
 	void register_io_types( type_database* db );
Index: /trunk/nv/position.hh
===================================================================
--- /trunk/nv/position.hh	(revision 131)
+++ /trunk/nv/position.hh	(revision 132)
@@ -32,29 +32,29 @@
 		position lr;
 		/**
-		 *Creates a new rectangle assigned to {0, 0, 0, 0}.
+		 * Creates a new rectangle assigned to {0, 0, 0, 0}.
 		 */
 		rectangle() : ul(), lr() {}
 		
 		/**
-		 *Creates a new rectangle given a position.
-		 *
-		 *@param p The position to assign the rectangle to.
+		 * Creates a new rectangle given a position.
+		 *
+		 * @param p The position to assign the rectangle to.
 		 */
 		rectangle( position p ) : ul(p), lr(p) {}
 		
 		/**
-		 *Creates a new rectangle given an upper-left and lower-right position.
-		 *
-		 *@param aul The position of the upper-left corner of the rectangle.
-		 *@param alr The position of the lower-right corner of the rectangle.
+		 * Creates a new rectangle given an upper-left and lower-right position.
+		 *
+		 * @param aul The position of the upper-left corner of the rectangle.
+		 * @param alr The position of the lower-right corner of the rectangle.
 		 */
 		rectangle( position aul, position alr ) : ul(aul), lr(alr) {}
 		
 		/**
-		 *Creates a new rectangle given an upper-left position, width, and height.
-		 *
-		 *@param aul The position of the upper-left corner of the rectangle.
-		 *@param width The width of the rectangle.
-		 *@param height The height of the rectangle.
+		 * Creates a new rectangle given an upper-left position, width, and height.
+		 *
+		 * @param aul The position of the upper-left corner of the rectangle.
+		 * @param width The width of the rectangle.
+		 * @param height The height of the rectangle.
 		 */
 		rectangle( position aul, value_type width, value_type height ) : ul(aul), lr(aul + position(width,height)) {}
@@ -66,33 +66,33 @@
         
         /**
-         * Explicit Copy constructor
+         * Explicit Copy assignment operator
          */
         rectangle& operator= (const rectangle& r) { ul = r.ul; lr = r.lr; return *this; }
 		
 		/**
-		 *Sets the dimensions of the rectangle without moving the upper-left of the rectangle.
-		 *
-		 *@param d The new dimensions of the rectangle.
+		 * Sets the dimensions of the rectangle without moving the upper-left of the rectangle.
+		 *
+		 * @param d The new dimensions of the rectangle.
 		 */
 		rectangle& dim( dimension d ) { lr = ul + d; return *this; }
 
 		/**
-		 *Moves the rectangle to a new position while maintaining its size.
-		 *
-		 *@param p The new position of the rectangle's upper-left corner.
+		 * Moves the rectangle to a new position while maintaining its size.
+		 *
+		 * @param p The new position of the rectangle's upper-left corner.
 		 */
 		rectangle& pos( position p )  { lr = p + (lr - ul); lr = p; return *this; }
 
 		/**
-		 *Sets the dimensions of the rectangle without moving the upper-left of the rectangle.
-		 *
-		 *@param d The new dimensions of the rectangle.
+		 * Sets the dimensions of the rectangle without moving the upper-left of the rectangle.
+		 *
+		 * @param d The new dimensions of the rectangle.
 		 */
 		void set_dimension( dimension d ) { lr = ul + d; }
 		
 		/**
-		 *Moves the rectangle to a new position while maintaining its size.
-		 *
-		 *@param p The new position of the rectangle's upper-left corner.
+		 * Moves the rectangle to a new position while maintaining its size.
+		 *
+		 * @param p The new position of the rectangle's upper-left corner.
 		 */
 		void set_position( position p ) { lr = p + (lr - ul); ul = p; }
@@ -101,168 +101,168 @@
 		position ll() const { return position( ul.x, lr.y ); }
 		/**
-		 *Gets the dimensions of the rectangle.  Synonym for get_size.
-		 *
-		 *@returns The dimensions of the rectangle.
-		 *@see get_size
+		 * Gets the dimensions of the rectangle.  Synonym for get_size.
+		 *
+		 * @returns The dimensions of the rectangle.
+		 * @see get_size
 		 */
 		dimension get_dimension() const { return lr - ul; }
 
 		/**
-		 *Gets the position of the upper-left corner of the rectangle.
-		 *
-		 *@returns The position of the rectangle's upper-left corner.
+		 * Gets the position of the upper-left corner of the rectangle.
+		 *
+		 * @returns The position of the rectangle's upper-left corner.
 		 */
 		position  get_position() const { return ul; }
 
 		/**
-		 *Gets the dimensions of the rectangle.  Synonym for get_dimension.
-		 *
-		 *@returns The dimensions of the rectangle.
-		 *@see get_dimension
+		 * Gets the dimensions of the rectangle.  Synonym for get_dimension.
+		 *
+		 * @returns The dimensions of the rectangle.
+		 * @see get_dimension
 		 */
 		dimension get_size() const { return lr - ul; }
 
 		/**
-		 *Gets the center of the rectangle.
-		 *
-		 *@returns The center of the rectangle.
+		 * Gets the center of the rectangle.
+		 *
+		 * @returns The center of the rectangle.
 		 */
 		position get_center() const { return ( lr + ul ) / 2; }
 
 		/**
-		 *Gets the width of the rectangle.
-		 *
-		 *@returns The width of the rectangle.
+		 * Gets the width of the rectangle.
+		 *
+		 * @returns The width of the rectangle.
 		 */
 		value_type get_width() const { return lr.x - ul.x; }
 
 		/**
-		 *Gets the height of the rectangle.
-		 *
-		 *@returns The height of the rectangle.
+		 * Gets the height of the rectangle.
+		 *
+		 * @returns The height of the rectangle.
 		 */
 		value_type get_height() const { return lr.y - ul.y; }
 
 		/**
-		 *Gets the area of the rectangle.
-		 *
-		 *@returns The area of the rectangle.
+		 * Gets the area of the rectangle.
+		 *
+		 * @returns The area of the rectangle.
 		 */
 		value_type get_area() const { return (lr.y - ul.y) * (lr.x - ul.x); }
 
 		/**
-		 *Checks to see if the rectangle is backwards.
-		 *
-		 *@returns True if the rectangle's upper-left is above and left (or equal to) the rectangle's lower-right, false if it is not.
+		 * Checks to see if the rectangle is backwards.
+		 *
+		 * @returns True if the rectangle's upper-left is above and left (or equal to) the rectangle's lower-right, false if it is not.
 		 */
 		bool is_valid() const {	return lr.x >= ul.x && lr.y >= ul.y; }
 
 		/**
-		 *Enlarges the rectangle by a given amount.  Each side is adjusted by the given amount, e.g. expanding by 1 increases the width and height by 2 each.
-		 *
-		 *@param value The amount to adjust each sides by.
+		 * Enlarges the rectangle by a given amount.  Each side is adjusted by the given amount, e.g. expanding by 1 increases the width and height by 2 each.
+		 *
+		 * @param value The amount to adjust each sides by.
 		 */
 		void expand( value_type value ) { position p(value,value); ul -= p; lr += p; }
 
 		/**
-		 *Reduces the rectangle by a given amount.  Each side is adjusted by the given amount, e.g. shrinking by 1 decreases the width and height by 2 each.
-		 *
-		 *@param value The amount to adjust each side by.
+		 * Reduces the rectangle by a given amount.  Each side is adjusted by the given amount, e.g. shrinking by 1 decreases the width and height by 2 each.
+		 *
+		 * @param value The amount to adjust each side by.
 		 */
 		void shrink( value_type value ) { position p(value,value); ul += p; lr -= p; }
 
 		/**
-		 *Gets a rectangle that is an expanded version of this rectangle.
-		 *
-		 *@param value The amount to adjust each side by.
-		 *@returns An expanded rectangle.
-		 *@see expand
+		 * Gets a rectangle that is an expanded version of this rectangle.
+		 *
+		 * @param value The amount to adjust each side by.
+		 * @returns An expanded rectangle.
+		 * @see expand
 		 */
 		rectangle expanded( int value ) { position p(value,value); return rectangle(ul-p, lr+p); }
 
 		/**
-		 *Gets a rectangle that is a shrunk version of this rectangle.
-		 *
-		 *@param value The amount to adjust each side by.
-		 *@returns A shrunk rectangle.
-		 *@see shrink
+		 * Gets a rectangle that is a shrunk version of this rectangle.
+		 *
+		 * @param value The amount to adjust each side by.
+		 * @returns A shrunk rectangle.
+		 * @see shrink
 		 */
 		rectangle shrinked( int value ) { position p(value,value); return rectangle(ul+p, lr-p); }
 		
 		/**
-		 *Shifts the rectangle by a given amount.
-		 *
-		 *@param pos The amount to shift the rectangle by.
+		 * Shifts the rectangle by a given amount.
+		 *
+		 * @param pos The amount to shift the rectangle by.
 		 */
 		rectangle& operator+=( const position& pos ) { ul += pos; lr += pos; return (*this); }
 
 		/**
-		 *Returns a rectangle shifted by a given amount.
-		 *
-		 *@param pos The amount to shift by. 
-		 *@returns The shifted rectangle.
+		 * Returns a rectangle shifted by a given amount.
+		 *
+		 * @param pos The amount to shift by. 
+		 * @returns The shifted rectangle.
 		 */
 		rectangle operator+( const position& pos ) const {	rectangle r(*this); return r += pos; }
 
 		/**
-		 *Shifts the rectangle by a given amount.
-		 *
-		 *@param pos The amount to shift the rectangle by.
+		 * Shifts the rectangle by a given amount.
+		 *
+		 * @param pos The amount to shift the rectangle by.
 		 */
 		rectangle& operator-=( const position& pos ) { ul -= pos; lr -= pos; return (*this); }
 
 		/**
-		 *Returns a rectangle shifted by a given amount.
-		 *
-		 *@oaram pos The amount to shift by.
-		 *@returns The shifted rectangle.
+		 * Returns a rectangle shifted by a given amount.
+		 *
+		 * @param pos The amount to shift by.
+		 * @returns The shifted rectangle.
 		 */
 		rectangle operator-( const position& pos ) const {	rectangle r(*this); return r -= pos; }
 
 		/**
-		 *Compares two rectangles to see if they are the same.
-		 *
-		 *@param r The rectangle to compare to.
-		 *@returns True if the rectangles have the same positions and dimensions, false otherwise.
+		 * Compares two rectangles to see if they are the same.
+		 *
+		 * @param r The rectangle to compare to.
+		 * @returns True if the rectangles have the same positions and dimensions, false otherwise.
 		 */
 		bool operator==( const rectangle& r ) const { return r.ul == ul && r.lr == lr; }
 
 		/**
-		 *Compares two rectangles to see if they are different.
-		 *
-		 *@param r The rectangle to compare to.
-		 *@returns True if the rectangles have different positions or dimensions, false otherwise.
+		 * Compares two rectangles to see if they are different.
+		 *
+		 * @param r The rectangle to compare to.
+		 * @returns True if the rectangles have different positions or dimensions, false otherwise.
 		 */
 		bool operator!=( const rectangle& r ) const { return r.ul != ul || r.lr != lr; }
 
 		/**
-		 *Checks if a position is within the bounds of this rectangle.
-		 *
-		 *@param r The position to check.
-		 *@returns True if the position is inside or on the edge of the rectangle, false otherwise.
+		 * Checks if a position is within the bounds of this rectangle.
+		 *
+		 * @param r The position to check.
+		 * @returns True if the position is inside or on the edge of the rectangle, false otherwise.
 		 */
 		bool contains( const position& r ) const{ return lr.y >= r.y && ul.y <= r.y && lr.x >= r.x && ul.x <= r.x; }
 
 		/**
-		 *Checks if a rectangle is within the bounds of this rectangle.
-		 *
-		 *@param r The rectangle to check.
-		 *@returns True if the entire rectangle to check is inside or on the edge of this rectangle, false otherwise.
+		 * Checks if a rectangle is within the bounds of this rectangle.
+		 *
+		 * @param r The rectangle to check.
+		 * @returns True if the entire rectangle to check is inside or on the edge of this rectangle, false otherwise.
 		 */
 		bool contains( const rectangle& r ) const { return contains( r.ul ) && contains( r.lr ); }
 
 		/**
-		 *Checks if another rectangle overlaps this one.
-		 *
-		 *@param r The rectangle to check.
-		 *@returns True if any part of the rectangle to check overlaps this rectangle, false otherwise.
+		 * Checks if another rectangle overlaps this one.
+		 *
+		 * @param r The rectangle to check.
+		 * @returns True if any part of the rectangle to check overlaps this rectangle, false otherwise.
 		 */
 		bool collides( const rectangle& r ) const { return lr.y > r.ul.y && ul.y < r.lr.y && lr.x > r.ul.x && ul.x < r.lr.x; }
 
 		/**
-		 *Limits the region of the rectangle to the inidicated rectangle.
-		 *
-		 *@param r The rectangle that this rectangle is confined to.
-		 *@returns True if the rectangle was changed, false otherwise.
+		 * Limits the region of the rectangle to the inidicated rectangle.
+		 *
+		 * @param r The rectangle that this rectangle is confined to.
+		 * @returns True if the rectangle was changed, false otherwise.
 		 */
 		bool clamp_to( const rectangle& r )
@@ -276,8 +276,8 @@
 
 		/**
-		 *Limits the size of the rectangle to the given rectangle's size.
-		 *
-		 *@param r The rectangle representing the maximum dimensions this rectangle can be.
-		 *@returns True if the rectangle needed to be resized, false otherwise.
+		 * Limits the size of the rectangle to the given rectangle's size.
+		 *
+		 * @param r The rectangle representing the maximum dimensions this rectangle can be.
+		 * @returns True if the rectangle needed to be resized, false otherwise.
 		 */
 		bool constrain_to( const rectangle& r )
@@ -290,5 +290,5 @@
 
 		/**
-		 *Fixes an invalid rectangle.
+		 * Fixes an invalid rectangle.
 		 */
 		void repair() 
@@ -299,7 +299,7 @@
 
 		/**
-		 *Expands the rectangle to just include the given point.
-		 *
-		 *@param p The point to include in the rectangle.
+		 * Expands the rectangle to just include the given point.
+		 *
+		 * @param p The point to include in the rectangle.
 		 */
 		void include_point( position p )
Index: /trunk/nv/singleton.hh
===================================================================
--- /trunk/nv/singleton.hh	(revision 131)
+++ /trunk/nv/singleton.hh	(revision 132)
@@ -19,6 +19,6 @@
 {
 	/**
-	 *singleton
-	 *@brief Represents an accessible static object that will only have one instance.
+	 * singleton
+	 * @brief Represents an accessible static object that will only have one instance.
 	 */
     template <class T>
@@ -31,5 +31,5 @@
 
 		/**
-		 *Creates the single instance if one doesn't already exist.
+		 * Creates the single instance if one doesn't already exist.
 		 */
         singleton()
@@ -40,5 +40,5 @@
 
 		/**
-		 *Destroys the instance.
+		 * Destroys the instance.
 		 */
         ~singleton()
@@ -50,7 +50,7 @@
     public:
 		/**
-		 *Checks to see if the instance exists.
+		 * Checks to see if the instance exists.
 		 *
-		 *@returns True if this singleton has an instance assigned, false otherwise.
+		 * @returns True if this singleton has an instance assigned, false otherwise.
 		 */
         static bool is_valid()
@@ -60,7 +60,7 @@
 
 		/**
-		 *Returns the pointer to the instance.
+		 * Returns the pointer to the instance.
 		 *
-		 *@returns The pointer to the instance.
+		 * @returns The pointer to the instance.
 		 */
         static T *pointer()
@@ -70,5 +70,5 @@
         }
 		/**
-		 *Returns the object referenced by this singleton.
+		 * Returns the object referenced by this singleton.
 		 */
         static T &reference()
@@ -84,6 +84,6 @@
 
 	/**
-	 *auto_singleton
-	 *@brief Represents a singleton that automatically creates an instance if one doesn't already exist.
+	 * auto_singleton
+	 * @brief Represents a singleton that automatically creates an instance if one doesn't already exist.
 	 */
     template <class T>
@@ -92,5 +92,5 @@
     public:
 		/**
-		 *Returns the pointer to the instance.  Makes an instance if one doesn't already exist.
+		 * Returns the pointer to the instance.  Makes an instance if one doesn't already exist.
 		 */
         static T *pointer()
@@ -104,5 +104,5 @@
 
 		/**
-		 *Returns the object referenced by this singleton.  Makes an instance if one doesn't already exist.
+		 * Returns the object referenced by this singleton.  Makes an instance if one doesn't already exist.
 		 */
         static T &reference()
Index: /trunk/nv/string.hh
===================================================================
--- /trunk/nv/string.hh	(revision 131)
+++ /trunk/nv/string.hh	(revision 132)
@@ -42,4 +42,5 @@
 	* value passed.
 	*/
+	template <>
 	inline string to_string( const string& value)
 	{
@@ -91,4 +92,5 @@
 	* value passed.
 	*/
+	template <>
 	inline void from_string( const string& vin, string& vout )
 	{
Index: /trunk/nv/uid.hh
===================================================================
--- /trunk/nv/uid.hh	(revision 131)
+++ /trunk/nv/uid.hh	(revision 132)
@@ -24,58 +24,58 @@
 		
 		/**
-		 *Creates a new instance of the unique indentifer store.
+		 * Creates a new instance of the unique indentifer store.
 		 */
 		uid_store();
 
 		/**
-		 *Gets the object with the specified ID.
+		 * Gets the object with the specified ID.
 		 *
-		 *@param auid The ID to fetch.
-		 *@returns The stored object for that ID.
+		 * @param auid The ID to fetch.
+		 * @returns The stored object for that ID.
 		 */
 		object* get( uid auid ) const;
 
 		/**
-		 *Removes the object with the specified ID.
+		 * Removes the object with the specified ID.
 		 *
-		 *@param auid The ID to remove.
-		 *@returns True if the removal was successful, false if the ID didn't exist.
+		 * @param auid The ID to remove.
+		 * @returns True if the removal was successful, false if the ID didn't exist.
 		 */
 		bool remove( uid auid );
 
 		/**
-		 *Adds an object to the store assigned to the indicated ID.
+		 * Adds an object to the store assigned to the indicated ID.
 		 *
-		 *@param o The object to add to the store.
-		 *@param auid The ID to assign to the object.
+		 * @param o The object to add to the store.
+		 * @param auid The ID to assign to the object.
 		 */
 		void insert( object* o, uid auid );
 
 		/**
-		 *Adds an object to the store and assigns it a new ID.
+		 * Adds an object to the store and assigns it a new ID.
 		 *
-		 *@param o The object to add to the store.
-		 *@returns The ID the object was store under.
+		 * @param o The object to add to the store.
+		 * @returns The ID the object was store under.
 		 */
 		uid insert( object* o );
 
 		/**
-		 *Gets the next available ID.
+		 * Gets the next available ID.
 		 *
-		 *@returns The next ID in the store.
+		 * @returns The next ID in the store.
 		 */
 		uid request_uid();
 
 		/**
-		 *Destroys the unique identifier store.
+		 * Destroys the unique identifier store.
 		 */
 		~uid_store();
 
 		/**
-		 *Retrieves an object and casts it to the specified type.
+		 * Retrieves an object and casts it to the specified type.
 		 *
-		 *@tparam T The type to cast to.
-		 *@param auid The ID the object is stored under.
-		 *@returns An object of the indicated type that was stored at the indicated ID.
+		 * @tparam T The type to cast to.
+		 * @param auid The ID the object is stored under.
+		 * @returns An object of the indicated type that was stored at the indicated ID.
 		 */
 		template< typename T >
