Superb blog post on implementing multi methods in Racket: https://lexi-lambda.github.io/blog/2016/02/18/simple-safe-multimethods-in-racket/ (has an interesting design with novel safety features)