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