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