Generic compliler