add genCast
unbreak if-expression generation
enable pointer arithmetic