type -> mode