allow each function to specify how many args it has