roughly implemented intermediate representation
complete IR