added parameter validation