Index: kernel/include/Key.h
===================================================================
--- kernel/include/Key.h	(revision 1005)
+++ kernel/include/Key.h	(working copy)
@@ -54,6 +54,7 @@
    \note The name in the typedef would have to start with ::IMP so it
    could be used out of the IMP namespace.
  */
+#ifndef IMP_DOXYGEN
 #define IMP_DECLARE_KEY_TYPE(Name, Tag)                                 \
   struct Name: public ::IMP::KeyBase<Tag> {                             \
   typedef ::IMP::KeyBase<Tag> P;                                        \
@@ -63,8 +64,18 @@
   Name(const char *nm): P(nm){}                                         \
 };                                                                      \
 typedef std::vector<Name> Name##s
+#else
+#define IMP_DECLARE_KEY_TYPE(Name, Tag)                                 \
+  struct Name: public ::IMP::KeyBase<ID> {                              \
+  typedef ::IMP::KeyBase<ID> P;                                         \
+  typedef Name This;                                                    \
+  Name(){};                                                             \
+  Name(unsigned int i): P(i){}                                          \
+  Name(const char *nm): P(nm){}                                         \
+};                                                                      \
+typedef std::vector<Name> Name##s
+#endif
 
-
 //! A base class for  Keys
 /** This class does internal caching of the strings to accelerate the
     name lookup. It is better to create an Key and reuse it
Index: doc/internal/doxygen.conf
===================================================================
--- doc/internal/doxygen.conf	(revision 1005)
+++ doc/internal/doxygen.conf	(working copy)
@@ -1227,7 +1227,7 @@
 # undefined via #undef or recursively expanded use the := operator 
 # instead of the = operator.
 
-PREDEFINED             = 
+PREDEFINED             = IMP_DOXYGEN
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 # this tag can be used to specify a list of macro names that should be expanded.