add apply function