adding macros
using single exception