an interpreter with state