intermediate representation