Lots more work on macro parsing