Fix Enumerator

- fix some bugs
- call optimization
- modify core method that return Enumerator object if not block given