template <class Data, class Arg, class Ret>
class Closure {
public:
  Closure(Data d) : rep(d) {}
  virtual Ret the_proc(Arg) = 0;
protected:
  Data rep;
};

