   (s/keys :req-un [::name ::project ::width ::height ::layout]))
 
 (defn create-page
-  [data]
+  [{:keys [name project width height layout] :as data}]
   {:pre [(us/valid? ::create-page-event data)]}
-  (map->CreatePage data))
+  (->CreatePage name project width height layout))
 
 ;; --- Page Persisted
 
-(defrecord PagePersisted [data]
+(deftype PagePersisted [data]
   ptk/UpdateEvent
   (update [_ state]
     ;; TODO: update only the version instead of complete unpacking


;; --- Update Page

(defrecord UpdatePage [id name width height layout]
  ptk/UpdateEvent
  (update [this state]
    (-> state


;; --- Update Page Options

(deftype UpdateMetadata [id metadata]
  IMetadataUpdate
  ptk/UpdateEvent
  (update [this state]
