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