working forward transformation WITH compilation :D