diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp
index bb25475a599a7ab8471f25889c0847f924ce8aa3..44e3b4950f052a475acaeb2a8915a1c93e4abd9f 100644
--- a/indra/llplugin/llplugininstance.cpp
+++ b/indra/llplugin/llplugininstance.cpp
@@ -43,14 +43,14 @@ LLPluginInstanceMessageListener::~LLPluginInstanceMessageListener()
 }
 
 /** 
- * Name of plugin init function. TODO:DOC need to describe how it's used?
+ * TODO:DOC describe how it's used
  */
 const char *LLPluginInstance::PLUGIN_INIT_FUNCTION_NAME = "LLPluginInitEntryPoint";
 
 /** 
  * Constructor.
  *
- * @param[in] owner Plugin instance. TODO:DOC is this a good description?
+ * @param[in] owner Plugin instance. TODO:DOC is this a good description of what "owner" is?
  */
 LLPluginInstance::LLPluginInstance(LLPluginInstanceMessageListener *owner) :
 	mDSOHandle(NULL),
@@ -154,6 +154,11 @@ void LLPluginInstance::staticReceiveMessage(const char *message_string, void **u
 	self->receiveMessage(message_string);
 }
 
+/**
+ * Plugin receives message from plugin loader shell.
+ *
+ * @param[in] message_string Message
+ */
 void LLPluginInstance::receiveMessage(const char *message_string)
 {
 	if(mOwner)
diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h
index 3a18d09172fff3c617ebd636f31c23da299f3f09..c11d5ab5d42da2adbda1f2b78d9714cf9e79506c 100644
--- a/indra/llplugin/llplugininstance.h
+++ b/indra/llplugin/llplugininstance.h
@@ -1,6 +1,5 @@
 /** 
  * @file llplugininstance.h
- * @brief LLPluginInstance handles loading the dynamic library of a plugin and setting up its entry points for message passing.
  *
  * @cond
  * $LicenseInfo:firstyear=2008&license=viewergpl$
@@ -39,13 +38,20 @@
 
 #include "apr_dso.h"
 
+/**
+ * @brief LLPluginInstanceMessageListener receives messages sent from the plugin loader shell to the plugin.
+ */
 class LLPluginInstanceMessageListener
 {
 public:
 	virtual ~LLPluginInstanceMessageListener();
+   /** Plugin receives message from plugin loader shell. */
 	virtual void receivePluginMessage(const std::string &message) = 0;
 };
 
+/**
+ * @brief LLPluginInstance handles loading the dynamic library of a plugin and setting up its entry points for message passing.
+ */
 class LLPluginInstance
 {
 	LOG_CLASS(LLPluginInstance);
diff --git a/indra/llplugin/llpluginmessage.cpp b/indra/llplugin/llpluginmessage.cpp
index d06f3cefa0217150660d899b7bf3392780388851..f76d848a70909397a0c2b26a875304098d4f648a 100644
--- a/indra/llplugin/llpluginmessage.cpp
+++ b/indra/llplugin/llpluginmessage.cpp
@@ -387,12 +387,18 @@ int LLPluginMessage::parse(const std::string &message)
 }
 
 
+/**
+ * Destructor
+ */
 LLPluginMessageListener::~LLPluginMessageListener()
 {
 	// TODO: should listeners have a way to ensure they're removed from dispatcher lists when deleted?
 }
 
 
+/**
+ * Destructor
+ */
 LLPluginMessageDispatcher::~LLPluginMessageDispatcher()
 {
 	
diff --git a/indra/llplugin/llpluginmessage.h b/indra/llplugin/llpluginmessage.h
index e00022a245f395854fecc746e1d3b65552a9da0a..cbd31e096462cd15512c9152d5b997d479058fab 100644
--- a/indra/llplugin/llpluginmessage.h
+++ b/indra/llplugin/llpluginmessage.h
@@ -1,6 +1,5 @@
 /** 
  * @file llpluginmessage.h
- * @brief LLPluginMessage encapsulates the serialization/deserialization of messages passed to and from plugins.
  *
  * @cond
  * $LicenseInfo:firstyear=2008&license=viewergpl$
@@ -36,7 +35,9 @@
 
 #include "llsd.h"
 
-
+/**
+ * @brief LLPluginMessage encapsulates the serialization/deserialization of messages passed to and from plugins.
+ */
 class LLPluginMessage
 {
 	LOG_CLASS(LLPluginMessage);
@@ -105,12 +106,13 @@ class LLPluginMessage
 };
 
 /**
- * @brief Listens for plugin messages.
+ * @brief Listener for plugin messages.
  */
 class LLPluginMessageListener
 {
 public:
 	virtual ~LLPluginMessageListener();
+   /** Plugin receives message from plugin loader shell. */
 	virtual void receivePluginMessage(const LLPluginMessage &message) = 0;
 	
 };