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