Split the macro engine into smaller pieces