added some interfaces
simplified addCondition()