icode: introduce intermediate code representation