refactor how variadic functions grab arguments into an std::list
refactor ConditionHelper to use a lambda to build an OrCondition
separate SearchCondition into its own header