diff --git a/rinoh/document.py b/rinoh/document.py
index <HASH>..<HASH> 100644
--- a/rinoh/document.py
+++ b/rinoh/document.py
@@ -117,9 +117,8 @@ class DocumentPart(list):
         return len(self.pages)
 
     def prepare(self):
-        for flowable in (flowable for target in self.flowable_targets
-                         for flowable in target.flowables):
-            flowable.prepare(self.document)
+        for flowable_target in self.flowable_targets:
+            flowable_target.prepare()
 
     def render(self):
         self.pages = []
diff --git a/rinoh/layout.py b/rinoh/layout.py
index <HASH>..<HASH> 100644
--- a/rinoh/layout.py
+++ b/rinoh/layout.py
@@ -81,6 +81,10 @@ class FlowableTarget(object):
         self.append_flowable(flowable)
         return self
 
+    def prepare(self):
+        for flowable in self.flowables:
+            flowable.prepare(self.document)
+
     def render(self):
         """Render the flowabless assigned to this flowable target, in the order
         that they have been added."""
Delegate prepare to FlowableTarget