split functions into categories