refactor parameter handling code