apply
enumeration
package object
refactor and unapply
functions