-typedef epvector::iterator epp;
-typedef std::list<epp> epplist;
-typedef std::vector<epplist> epplistvector;
+/** Using hash tables can potentially enhance the asymptotic behaviour of
+ * combining n terms into one large sum (or n terms into one large product)
+ * from O(n*log(n)) to about O(n). There are, however, several drawbacks.
+ * The constant in front of O(n) is quite large, when copying such an object
+ * one also has to copy the has table, comparison is quite expensive because
+ * there is no ordering any more, it doesn't help at all when combining two
+ * expairseqs because due to the presorted nature the behaviour would be
+ * O(n) anyways, the code is quite messy, etc, etc. The code is here as
+ * an example for following generations to tinker with. */
+#define EXPAIRSEQ_USE_HASHTAB 0
+
+typedef std::vector<expair> epvector; ///< expair-vector
+typedef epvector::iterator epp; ///< expair-vector pointer
+typedef std::list<epp> epplist; ///< list of expair-vector pointers
+typedef std::vector<epplist> epplistvector; ///< vector of epplist
+
+/** Complex conjugate every element of an epvector. Returns zero if this
+ * does not change anything. */
+epvector* conjugateepvector(const epvector&);