Implement full macro expansion