Begin to rewrite compiler