The Goops MOP for generic application is basically undocumented. I tried to figure it out looking at goops.scm, but am a little lost. Specifically, I can't quite figure out how apply-method is supposed to work. Mostly, how (next-method) gets bound. It looks to me like it's supposed to be passed as an argument to the body of the method, but nothing I can see does that. On top of that, calling apply-method directly doesn't work (complaining about as I would expect, the wrong number of args to the method body): (use-modules (oop goops)) (define-class () (slot1)) (define-class () (slot2)) (define-method (baz (foo )) foo) (define-method (baz (foo )) foo) (define l (compute-applicable-methods baz (list (make )))) (define m1 (car l)) (define m2 (cadr l)) ; ; stolen from apply-methods ; (define next (lambda (procs args) (lambda new-args (let ((a (if (null? new-args) args new-args))) (if (null? procs) (no-next-method gf a) (apply-method gf procs next a)))))) (apply-method baz l next (list (make ))) -- Eric E. Moore