choose function by parameter