                             :index index}
                            {:type :mov-objects
                             :parent-id id
-                            :shapes (vec selected)}]
+                            :shapes (->> items
+                                         (map :id)
+                                         (into #{})
+                                         (vec))}]
 
                 uchanges
                 (reduce (fn [res obj]
                           (conj res {:type :mov-objects
                                      :parent-id (:parent-id obj)
-                                     :index (:index obj)
+                                     :index (::index obj)
                                      :shapes [(:id obj)]}))
                         []
-                        (->> selected
-                             (map #(get objects %))
-                             (map #(assoc % :index (cph/position-on-parent (:id %) objects)))
-                             (sort-by :index)))
+                        items)
 
                 uchanges (conj uchanges {:type :del-obj :id id})]
 

                group     (-> (group-shape id frame-id selected selrect)
                              (geom/setup selrect))

                index     (cph/position-on-parent (:id (first items)) objects)

                rchanges  [{:type :add-obj
                            :id id

            objects  (get-in state [:workspace-data page-id :objects])
            items    (->> selected
                          (map #(get objects %))
                          (filter #(not= :frame (:type %)))
                          (map #(assoc % ::index (cph/position-on-parent (:id %) objects)))
                          (sort-by ::index))]

        (when (not-empty items)
          (let [selrect   (geom/selection-rect items)
                frame-id  (-> items first :frame-id)
