added variable args macro