hd should be an inline macro