enabled strict mode
avoid arguments.callee
avoid arguments.callee