split functions and dispatch by name