diff --git a/app/models/alchemy/page/publisher.rb b/app/models/alchemy/page/publisher.rb
index <HASH>..<HASH> 100644
--- a/app/models/alchemy/page/publisher.rb
+++ b/app/models/alchemy/page/publisher.rb
@@ -19,9 +19,11 @@ module Alchemy
           version = public_version(public_on)
           DeleteElements.new(version.elements).call
 
-          # We must not use .find_each here to not mess up the order of elements
-          page.draft_version.elements.not_nested.available.each do |element|
-            Element.copy(element, page_version_id: version.id)
+          repository = page.draft_version.element_repository
+          repository.visible.not_nested.each do |element|
+            Alchemy::DuplicateElement.new(element, repository: repository).call(
+              page_version_id: version.id,
+            )
           end
         end
       end
Use page version element repo and duplicator in publisher

This should speed up page publishing considerably. Specs are sufficient.