use fn.apply in external vm event methods