define function types