Introduced a type definition IR construct in order to cleanup the IR structure