What defines methods and fields that can then be reused by mixing into classes?
monad
trait
assertion
singleton