add generators
fix tailcall bug and switch back to bytecode backend