initial Doxygen work
diff --git a/include/FLAC++/metadata.h b/include/FLAC++/metadata.h
index 578cf96..eb019da 100644
--- a/include/FLAC++/metadata.h
+++ b/include/FLAC++/metadata.h
@@ -47,13 +47,38 @@
 		// DO NOT disobey and write into it.  Always use the set_*()
 		// methods.
 
-		// base class for all metadata blocks
+		//!
+		//! Base class for all metadata blocks.
+		//!
 		class Prototype {
 		protected:
-			Prototype(const Prototype &object); // this form always copies object.object_
-			Prototype(const ::FLAC__StreamMetadata &object); // this form always copies
-			Prototype(const ::FLAC__StreamMetadata *object); // this form always copies
-			Prototype(::FLAC__StreamMetadata *object, bool copy); // this form allows you to pass ownership to the Prototype using copy=false
+			//!
+			//! Constructs a copy of the given object.  This form
+			//! always performs a deep copy.
+			//!
+			Prototype(const Prototype &object);
+
+			//!
+			//! Constructs a copy of the given object.  This form
+			//! always performs a deep copy.
+			//!
+			Prototype(const ::FLAC__StreamMetadata &object);
+
+			//!
+			//! Constructs a copy of the given object.  This form
+			//! always performs a deep copy.
+			//!
+			Prototype(const ::FLAC__StreamMetadata *object);
+
+			//!
+			//! Constructs an object with copy control.  When 'copy'
+			//! is true, behaves identically to
+			//! FLAC::Metadata::Prototype::Prototype(const ::FLAC__StreamMetadata *object).
+			//! When 'copy' is false, the instance takes ownership of
+			//! the pointer and the ::FLAC__StreamMetadata object will
+			//! be freed by the destructor.
+			//!
+			Prototype(::FLAC__StreamMetadata *object, bool copy);
 
 			void operator=(const Prototype &);
 			void operator=(const ::FLAC__StreamMetadata &); // this form always copies