add apply and call invocation pattern