factorise function parameter matching