Some cleanup
inject __i__ and __len__ as arguments
Add support for context
remove TODO item for context support
Add parsing of arguments
optimisations
add eval version