fixed es2, es3 still bugged