diff --git a/common/rfb/CapsContainer.cxx b/common/rfb/CapsContainer.cxx
index cea5f3a..a64a524 100644
--- a/common/rfb/CapsContainer.cxx
+++ b/common/rfb/CapsContainer.cxx
@@ -18,26 +18,18 @@
 
 //
 // CapsContainer class implementation.
-// FIXME: Extend the comment.
+// Member variables and functions are documented in CapsContainer.h.
 //
 
 #include <rfb/CapsContainer.h>
 
 using namespace rfb;
 
-//
-// The constructor.
-//
-
 CapsContainer::CapsContainer(int maxCaps)
 : m_maxSize(maxCaps), m_listSize(0), m_plist(new rdr::U32[m_maxSize])
 {
 }
 
-//
-// The destructor.
-//
-
 CapsContainer::~CapsContainer()
 {
   delete[] m_plist;
@@ -49,12 +41,6 @@
   }
 }
 
-//
-// Add information about a particular capability into the object. There are
-// two functions to perform this task. These functions overwrite capability
-// records with the same code.
-//
-
 void
 CapsContainer::add(rdr::U32 code, const char *vendor, const char *name,
                    const char *desc)
@@ -85,22 +71,12 @@
   m_descMap[capinfo->code] = desc_copy;
 }
 
-//
-// Check if a capability with the specified code was added earlier.
-//
-
 bool
 CapsContainer::isKnown(rdr::U32 code) const
 {
   return (m_descMap.find(code) != m_descMap.end());
 }
 
-//
-// Fill in a rfbCapabilityInfo structure with contents corresponding to the
-// specified code. Returns true on success, false if the specified code is
-// not known.
-//
-
 bool
 CapsContainer::getInfo(rdr::U32 code, CapabilityInfo *capinfo) const
 {
@@ -112,24 +88,12 @@
   return false;
 }
 
-//
-// Get a description string for the specified capability code. Returns 0
-// either if the code is not known, or if there is no description for this
-// capability.
-//
-
 char *
 CapsContainer::getDescription(rdr::U32 code) const
 {
   return (isKnown(code)) ? m_descMap.find(code)->second : 0;
 }
 
-//
-// Mark the specified capability as "enabled". This function checks "vendor"
-// and "name" signatures in the existing record and in the argument structure
-// and enables the capability only if both records are the same.
-//
-
 bool
 CapsContainer::enable(const CapabilityInfo *capinfo)
 {
@@ -150,21 +114,12 @@
   return true;
 }
 
-//
-// Check if the specified capability is known and enabled.
-//
-
 bool
 CapsContainer::isEnabled(rdr::U32 code) const
 {
   return (isKnown(code)) ? m_enableMap.find(code)->second : false;
 }
 
-//
-// Return the capability code at the specified index.
-// If the index is not valid, return 0.
-//
-
 rdr::U32
 CapsContainer::getByOrder(int idx) const
 {
