deep func