typeclasses. Supports combinations of multiple typeclasses and out-of-source method definitions (data and logic separation).