added bytecode caching