Improve the def.directive macro