diff --git a/lib/quby/compiler/dsl.rb b/lib/quby/compiler/dsl.rb
index d1177be688428446bbd258acdfbb6ad6cde8fdee..219984352ac498749e48093a4ac7f76c6aeb144a 100644
--- a/lib/quby/compiler/dsl.rb
+++ b/lib/quby/compiler/dsl.rb
@@ -10,15 +10,15 @@ module Quby
     module DSL
       def self.build_from_definition(definition)
         Entities::Questionnaire.new(definition.key, last_update: definition.timestamp).tap do |questionnaire|
-          builder = QuestionnaireBuilder.new(questionnaire)
+          builder = QuestionnaireBuilder.new(questionnaire, lookup_tables: definition.lookup_tables)
           builder.instance_eval(definition.sourcecode, definition.path) if definition.sourcecode
           questionnaire.callback_after_dsl_enhance_on_questions
         end
       end
 
-      def self.build(key, sourcecode = nil, path: nil, timestamp: nil, &block)
+      def self.build(key, sourcecode = nil, path: nil, timestamp: nil, lookup_tables: {}, &block)
         Entities::Questionnaire.new(key, last_update: timestamp).tap do |questionnaire|
-          builder = QuestionnaireBuilder.new(questionnaire)
+          builder = QuestionnaireBuilder.new(questionnaire, lookup_tables: lookup_tables)
           builder.instance_eval(sourcecode, path || key) if sourcecode
           builder.instance_eval(&block) if block
           questionnaire.callback_after_dsl_enhance_on_questions
diff --git a/lib/quby/compiler/dsl/questionnaire_builder.rb b/lib/quby/compiler/dsl/questionnaire_builder.rb
index 69bd27a3ca47d1946c9ee54288ca991c733872b5..f18c8f0a5ecda74e786e6adbb57d1346496ade45 100644
--- a/lib/quby/compiler/dsl/questionnaire_builder.rb
+++ b/lib/quby/compiler/dsl/questionnaire_builder.rb
@@ -19,7 +19,7 @@ module Quby
         include StandardizedPanelGenerators
         include Helpers
 
-        def initialize(target_instance, lookup_tables: nil)
+        def initialize(target_instance, lookup_tables:)
           @questionnaire = target_instance
           @lookup_tables = lookup_tables
           @default_question_options = {}
diff --git a/lib/quby/compiler/entities/definition.rb b/lib/quby/compiler/entities/definition.rb
index a0960716d6254b5c413871b6198f5b41425598de..f02adde4b051c72e5cd25b4d5edd71c2e264802c 100644
--- a/lib/quby/compiler/entities/definition.rb
+++ b/lib/quby/compiler/entities/definition.rb
@@ -10,13 +10,14 @@ module Quby
         extend  ActiveModel::Naming
         include ActiveModel::Validations
 
-        attr_accessor :key, :sourcecode, :timestamp, :path
+        attr_accessor :key, :sourcecode, :timestamp, :path, :lookup_tables
 
-        def initialize(key:, path:, sourcecode: "", timestamp: nil)
+        def initialize(key:, path:, sourcecode: "", timestamp: nil, lookup_tables: {})
           @path = path
           @key = key
           @sourcecode = sourcecode
           @timestamp = timestamp
+          @lookup_tables = lookup_tables
         end
 
         validates_with Services::DefinitionValidator
diff --git a/lib/quby/compiler/instance.rb b/lib/quby/compiler/instance.rb
index bd1b9fd45f508d41933c1ec8e3cc9d2d5a8aed60..5f724c9e06ecdba69a7c5627c72bbd5ff7ee2953 100644
--- a/lib/quby/compiler/instance.rb
+++ b/lib/quby/compiler/instance.rb
@@ -63,7 +63,7 @@ module Quby
       end
 
       def validate(key:, sourcecode:)
-        definition = Entities::Definition.new(key: key, sourcecode: sourcecode, path: "validating '#{key}'")
+        definition = Entities::Definition.new(key: key, sourcecode: sourcecode, path: "validating '#{key}'", lookup_tables: lookup_tables)
         definition.valid?
         definition
       end
diff --git a/lib/quby/compiler/services/definition_validator.rb b/lib/quby/compiler/services/definition_validator.rb
index d3a39e6dbdeaf5bffa1e0576a88cba1650475993..6785a6bddb6ce3b172cbbfbb21f3a7999f866348 100644
--- a/lib/quby/compiler/services/definition_validator.rb
+++ b/lib/quby/compiler/services/definition_validator.rb
@@ -30,7 +30,7 @@ module Quby
         rescue Exception => exception # rubocop:disable Lint/RescueException
           definition.errors.add(:sourcecode, {message: "Questionnaire error: #{definition.key}\n" \
                                                        "#{exception.message}",
-                                              backtrace: exception.backtrace[0..5].join("<br/>")})
+                                              backtrace: exception.backtrace[0..20]})
         end
 
         def validate_fields(questionnaire)
diff --git a/spec/quby/compiler/dsl/helpers_spec.rb b/spec/quby/compiler/dsl/helpers_spec.rb
index cc507e6279b9d3ab2cdbe1d771c75e5e74d2ba69..32b553eff2ed3525eb9f60561864f7d44127dbeb 100644
--- a/spec/quby/compiler/dsl/helpers_spec.rb
+++ b/spec/quby/compiler/dsl/helpers_spec.rb
@@ -5,7 +5,8 @@ require 'spec_helper'
 module Quby::Compiler::DSL
   describe Helpers do
     let(:questionnaire) { Quby::Compiler::Entities::Questionnaire.new("example") }
-    let(:builder) { QuestionnaireBuilder.new(questionnaire) }
+    let(:lookup_tables) { {} }
+    let(:builder) { QuestionnaireBuilder.new(questionnaire, lookup_tables: lookup_tables) }
 
     # this helper has some extra tests to check that helpers are included everywhere
     describe '.image_tag' do
diff --git a/spec/quby/compiler/dsl/questionnaire_builder_spec.rb b/spec/quby/compiler/dsl/questionnaire_builder_spec.rb
index 15011494bb09d23f4646d555140d201355ce75aa..03bbc36d9430554e2ec9baae1fe1ef22771ae881 100644
--- a/spec/quby/compiler/dsl/questionnaire_builder_spec.rb
+++ b/spec/quby/compiler/dsl/questionnaire_builder_spec.rb
@@ -5,7 +5,8 @@ require 'spec_helper'
 module Quby::Compiler::DSL
   describe QuestionnaireBuilder do
     let(:questionnaire) { Quby::Compiler::Entities::Questionnaire.new("example") }
-    let(:builder) { QuestionnaireBuilder.new(questionnaire) }
+    let(:lookup_tables) { {} }
+    let(:builder) { QuestionnaireBuilder.new(questionnaire, lookup_tables: lookup_tables) }
 
     it 'sets title' do
       dsl { title 'Foo' }
diff --git a/spec/quby/compiler/services/definition_validator_spec.rb b/spec/quby/compiler/services/definition_validator_spec.rb
index 59f9ac26cabb31e7c9b5abccf38dbbc7d1686599..65309bc1a871870ce1dbf936a4fa22bd25318958 100644
--- a/spec/quby/compiler/services/definition_validator_spec.rb
+++ b/spec/quby/compiler/services/definition_validator_spec.rb
@@ -809,5 +809,17 @@ module Quby::Compiler::Services
         expect(definition.errors.full_messages.first).to include('That tag isn\'t allowed here')
       end
     end
+
+    describe 'when using lookup tables' do
+      it 'can validate an externally referenced table' do
+        definition = Quby::Compiler::Entities::Definition.new(
+          key: 'test', 
+          sourcecode: "title 'foo'; import_lookup_tree 'bar'", 
+          path: 'fake definition test',
+          lookup_tables: {'bar' => ""}
+        )
+        expect(definition.valid?).to be true
+      end
+    end
   end
 end