         debug (log/debug (str "target surface: " target-language-surface))
 
         source-language (:language source-language-model)
-        target-language (:language target-language-model)
         error (if (or (nil? target-language-surface)
                       (= target-language-surface ""))
-                (let [message (str "Could not generate a sentence in target language '" target-language 
+                (let [message (str "Could not generate a sentence in source language '"
+                                   (:language source-language-model) 
                                    "' for this spec: " spec)]
                   (if (= true mask-populate-errors)
                     (log/warn message)

                                                  {:synsem {:sem {:subj subj}}}))
                                         true
                                         target-language-sentence))
        ;; resolve future
        source-language-model (if (future? source-language-model)
                                @source-language-model
                                source-language-model)

        source-fo (:morph source-language-model)
        target-fo (:morph target-language-model)

        ;; TODO: add warning if semantics of target-expression is merely :top - it's
        ;; probably not what the caller expected. Rather it should be something more
        ;; specific, like {:pred :eat :subj {:pred :antonio}} ..etc.
        source-language-sentence (engine/generate (get-in target-language-sentence
                                                          [:synsem :sem] :top)
                                                  source-language-model :enrich true)

        source-language-sentence (if (:morph-walk-tree source-language-model)
                                   (do
                                     ((:morph-walk-tree source-language-model) source-language-sentence)
                                     source-language-sentence)
                                   (do (log/warn (str "there is no morph-walk-tree function for the model:"
                                                      (:name source-language-model) " of language: "
                                                      (:language source-language-model)))
                                       source-language-sentence))

        semantics (strip-refs (get-in target-language-sentence [:synsem :sem] :top))
        debug (log/debug (str "semantics of resulting expression: " semantics))
        debug (log/trace (str "entire expression: " target-language-sentence))


        target-language-sentence (engine/generate spec target-language-model :enrich true)
        
        target-language-sentence (if (:morph-walk-tree target-language-model)
                                   (merge ((:morph-walk-tree target-language-model) target-language-sentence)
                                          target-language-sentence)
                                   (do (log/warn (str "there is no morph-walk-tree function for the model:"
                                                      (:name target-language-model) " of language: "
                                                      (:language target-language-model)))
