refactor compiler -> interpreter