Two major obstacles hindering the wider acceptance of multi-methods ar
e concerns over the lack of encapsulation and modularity and the absen
ce of static typechecking in existing multi-method-based languages. Th
is paper addresses both of these problems. We present a polynomial-tim
e static typechecking algorithm that checks the conformance, completen
ess, and consistency of a group of method implementations with respect
to declared message signatures. This algorithm improves on previous a
lgorithms by handling separate type and inheritance hierarchies, abstr
act classes, and graph-based method lookup semantics. We also present
a module system that enables independently-developed code to be fully
encapsulated and statically typechecked on a per-module basis. To guar
antee that potential conflicts between independently-developed modules
have been resolved, a simple well-formedness condition on the modules
comprising a program is checked at link-time. The typechecking algori
thm and module system are applicable to a range of multi-method-based
languages, but the paper uses the Cecil language as a concrete example
of how they can be applied.