add arbitrary number of conditions support