unhardcoding macro compilation, step I: engine