Refactoring Condition architecture