implemented condp macro