adding cexp intermediate-representation, still needs work obviously