fix recursive macro