Dear caml-list, I try to define the signature of three interdependant classes that should then be derived and completed for various implementation. The code below causes the strange error messsage: File "tmp.ml", line 4, characters 7-92: In the definition of job, type ('a, 'b) batch should be ('a, 'c) batch Can you explain what is wrong with this signature? I was unable to find an answer to a similar problem in the archives. Thank you very much. Jean ---------------------------------------------------------------------------- module type JOB = sig type ('a, 'b) batch = private < build : 'a job -> ('a priority * 'a) list -> 'b job; .. > and 'b priority = private < next : 'b priority; .. > and 'a job = private < create_batch : 'c.('a -> 'c) -> ('a, 'c) batch; .. > end