diff --git a/lib/quby/compiler/entities/flag.rb b/lib/quby/compiler/entities/flag.rb
index fd05fb24c0c89ca48018f1f8e0424428dea3360d..479b0ebfc6ce5f366fc8cc5a08b3c22c477281f3 100644
--- a/lib/quby/compiler/entities/flag.rb
+++ b/lib/quby/compiler/entities/flag.rb
@@ -14,11 +14,11 @@ module Quby
                        trigger_on: true,
                        shows_questions: [],
                        hides_questions: [],
-                       depends_on: nil, # used in interface to hide this flag unless the depended on flag is set to true
+                       depends_on: [], # used in interface to hide this flag unless the depended on flag is set to true
                        default_in_interface: nil) # used in interface to set a default for the flag state,
                                                   # does not have an effect outside of the interface
           super(key, description_true, description_false, description, internal, trigger_on, shows_questions,
-                hides_questions, depends_on, default_in_interface)
+                hides_questions, Array.wrap(depends_on).map(&:to_s), default_in_interface)
           ensure_valid_descriptions
         end
         # rubocop:enable ParameterLists
diff --git a/lib/quby/compiler/services/definition_validator.rb b/lib/quby/compiler/services/definition_validator.rb
index 16b295a5acef3ed1d91138967ffa3ec3fc50569d..d3a39e6dbdeaf5bffa1e0576a88cba1650475993 100644
--- a/lib/quby/compiler/services/definition_validator.rb
+++ b/lib/quby/compiler/services/definition_validator.rb
@@ -131,9 +131,9 @@ module Quby
         end
 
         def validate_flag_depends_on(questionnaire, flag)
-          return if flag.depends_on.blank? || questionnaire.flags.key?(flag.depends_on)
+          return if (missing = flag.depends_on - questionnaire.flags.keys).blank?
 
-          fail ArgumentError, "Flag #{flag.key} depends_on nonexistent flag '#{flag.depends_on}'"
+          fail ArgumentError, "Flag #{flag.key} depends_on nonexistent flag '#{missing.to_sentence}'"
         end
 
         def validate_respondent_types(questionnaire)
diff --git a/spec/quby/compiler/entities/flag_spec.rb b/spec/quby/compiler/entities/flag_spec.rb
index 99e3c285871c350aa00a26c04568cedec58fe6fc..90cdbe9d78960d891664cfb627cde23753b0aacc 100644
--- a/spec/quby/compiler/entities/flag_spec.rb
+++ b/spec/quby/compiler/entities/flag_spec.rb
@@ -47,5 +47,11 @@ module Quby::Compiler::Entities
         expect(flag.variable_description).to eq("test flag (true - 'flag is true', false - 'flag is false')")
       end
     end
+
+    # we only set through the initializer.
+    it 'transforms depends_on into an array of string' do
+      flag = described_class.new key: :foo, description: 'foo', depends_on: :bar
+      expect(flag.depends_on).to eq ['bar']
+    end
   end
 end