         }, (err, src_objects) ->
           return next err if err
           log "#{src_objects.length} objects found"
-          next null, {db, src_site, src_objects}
+          next null, {db, user, src_site, src_objects}
 
       # make sure new site doesn't already exist
-      ({db, src_site, src_objects}, next) ->
+      ({db, user, src_site, src_objects}, next) ->
         log 'make sure new site is available'
         db.sites.findOne {
           slug: dst_slug
         }, (err, dst_site) ->
           err = 'dst_slug already taken' if dst_site
-          next err, {db, src_site, src_objects}
+          next err, {db, user, src_site, src_objects}
 
       # create new site
-      ({db, src_site, src_objects}, next) ->
+      ({db, user, src_site, src_objects}, next) ->
         site = src_site.val()
         site.slug = dst_slug
         site.name = dst_slug

        site.settings.seo = {}
        site.settings.icons = {}
        db.sites.insert site, (err, dst_site) ->
          next err, {db, src_site, src_objects, dst_site}

      # insert objects
      ({db, src_site, src_objects, dst_site}, next) ->
        ids = {}
        async.map src_objects, ((src_object, callback) ->
          data = src_object.val()

            ids[src_id] = dst_id
            callback null, dst_object
        ), (err, dst_objects) ->
          next err, {db, dst_objects, ids}

      # update object references
      ({db, dst_objects, ids}, next) ->
        async.forEach dst_objects, ((dst_object, callback) ->
          data_ref = dst_object.get 'data'
          data = JSON.stringify data_ref.val()
