use macro to describe dependency