interpreter with a garbage collector