+typedef void
+(*DestroySetImpl) (struct SetState *state);
+
+
+/**
+ * Signature of functions that implement accepting a set operation.
+ *
+ * @param op operation that is created by accepting the operation,
+ * should be initialized by the implementation
+ */
+typedef void
+(*OpAcceptImpl) (struct Operation *op);
+
+
+/**
+ * Signature of functions that implement starting the evaluation of
+ * set operations.
+ *
+ * @param op operation that is created, should be initialized to
+ * begin the evaluation
+ * @param opaque_context message to be transmitted to the listener
+ * to convince him to accept, may be NULL
+ */
+typedef void
+(*OpEvaluateImpl) (struct Operation *op,
+ const struct GNUNET_MessageHeader *opaque_context);
+
+
+/**
+ * Signature of functions that implement the message handling for
+ * the different set operations.
+ *
+ * @param op operation state
+ * @param msg received message
+ * @return #GNUNET_OK on success, #GNUNET_SYSERR to
+ * destroy the operation and the tunnel
+ */
+typedef int
+(*MsgHandlerImpl) (struct Operation *op,
+ const struct GNUNET_MessageHeader *msg);
+
+
+/**
+ * Signature of functions that implement operation cancellation
+ *
+ * @param op operation state
+ */
+typedef void
+(*CancelImpl) (struct Operation *op);
+
+
+typedef struct SetState *
+(*CopyStateImpl) (struct Set *op);
+
+
+/**
+ * Dispatch table for a specific set operation. Every set operation
+ * has to implement the callback in this struct.
+ */
+struct SetVT