restrict function signature