implemented cond-> macro