diff --git a/glazier-react-widget.cabal b/glazier-react-widget.cabal
--- a/glazier-react-widget.cabal
+++ b/glazier-react-widget.cabal
@@ -1,5 +1,5 @@
 name:                glazier-react-widget
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Generic widget library using glazier-react
 description:         Generic widget library using glazier-react
 homepage:            https://github.com/louispan/glazier-react-widget#readme
@@ -25,7 +25,7 @@
                      , dlist >= 0.8 && < 0.9
                      , free >= 4.12 && < 5
                      , glazier >= 0.10 && < 1
-                     , glazier-react >= 0.1 && < 1
+                     , glazier-react >= 0.2 && < 1
                      , javascript-extras >= 0.2 && < 1
                      , lens >= 4 && < 5
                      , mmorph >= 1 && < 2
diff --git a/src/Glazier/React/Widgets/Input.hs b/src/Glazier/React/Widgets/Input.hs
--- a/src/Glazier/React/Widgets/Input.hs
+++ b/src/Glazier/React/Widgets/Input.hs
@@ -12,15 +12,15 @@
     ( Command(..)
     , Action(..)
     , AsAction(..)
-    , Gasket(..)
-    , HasGasket(..)
-    , mkGasket
+    , Plan(..)
+    , HasPlan(..)
+    , mkPlan
     , Model(..)
     , HasModel(..)
     , mkSuperModel
     , Widget
-    , GModel
-    , MModel
+    , Design
+    , Replica
     , SuperModel
     , window
     , gadget
@@ -65,7 +65,7 @@
     , _className :: J.JSString
     }
 
-data Gasket = Gasket
+data Plan = Plan
     { _component :: R.ReactComponent
     , _onRender :: J.Callback (J.JSVal -> IO J.JSVal)
     , _onInputRef :: J.Callback (J.JSVal -> IO ())
@@ -73,11 +73,11 @@
     } deriving (G.Generic)
 
 makeClassyPrisms ''Action
-makeClassy ''Gasket
+makeClassy ''Plan
 makeClassy ''Model
 
-mkGasket :: R.MModel Gasket Model -> F (R.Maker (Action act)) Gasket
-mkGasket mm = Gasket
+mkPlan :: R.Replica Model Plan -> F (R.Maker (Action act)) Plan
+mkPlan mm = Plan
     <$> R.getComponent
     <*> (R.mkRenderer mm $ const render)
     <*> (R.mkHandler $ pure . pure . InputRefAction)
@@ -87,29 +87,29 @@
     disposing _ = CD.DisposeNone
 
 mkSuperModel :: Model -> F (R.Maker (Action act)) (SuperModel act)
-mkSuperModel s = R.mkSuperModel mkGasket $ \gkt -> R.GModel gkt s
+mkSuperModel mdl = R.mkSuperModel mkPlan (R.Design mdl)
 
 data Widget act
 instance R.IsWidget (Widget act) where
     type WidgetAction (Widget act) = Action act
     type WidgetCommand (Widget act) = Command act
     type WidgetModel (Widget act) = Model
-    type WidgetGasket (Widget act) = Gasket
-type GModel act = R.WidgetGModel (Widget act)
-type MModel act = R.WidgetMModel (Widget act)
+    type WidgetPlan (Widget act) = Plan
+type Design act = R.WidgetDesign (Widget act)
+type Replica act = R.WidgetReplica (Widget act)
 type SuperModel act = R.WidgetSuperModel (Widget act)
-instance CD.Disposing Gasket
-instance HasGasket (R.GModel Gasket Model) where
-    gasket = R.widgetGasket
-instance HasModel (R.GModel Gasket Model) where
+instance CD.Disposing Plan
+instance HasPlan (R.Design Model Plan) where
+    plan = R.widgetPlan
+instance HasModel (R.Design Model Plan) where
     model = R.widgetModel
-instance HasGasket (R.SuperModel Gasket Model) where
-    gasket = R.gModel . gasket
-instance HasModel (R.SuperModel Gasket Model) where
-    model = R.gModel . model
+instance HasPlan (R.SuperModel Model Plan) where
+    plan = R.design . plan
+instance HasModel (R.SuperModel Model Plan) where
+    model = R.design . model
 
 -- | This is used by parent components to render this component
-window :: Monad m => G.WindowT (GModel act) (R.ReactMlT m) ()
+window :: Monad m => G.WindowT (Design act) (R.ReactMlT m) ()
 window = do
     s <- ask
     lift $ R.lf (s ^. component . to JE.toJS)
@@ -118,7 +118,7 @@
         ]
 
 -- | This is used by the React render callback
-render :: Monad m => G.WindowT (GModel act) (R.ReactMlT m) ()
+render :: Monad m => G.WindowT (Design act) (R.ReactMlT m) ()
 render = do
     s <- ask
     lift $ R.lf (JE.strJS "input")
diff --git a/src/Glazier/React/Widgets/List.hs b/src/Glazier/React/Widgets/List.hs
--- a/src/Glazier/React/Widgets/List.hs
+++ b/src/Glazier/React/Widgets/List.hs
@@ -14,15 +14,15 @@
     ( Command(..)
     , Action(..)
     , AsAction(..)
-    , Gasket(..)
-    , HasGasket(..)
-    , mkGasket
+    , Plan(..)
+    , HasPlan(..)
+    , mkPlan
     , Model(..)
     , HasModel(..)
     , mkSuperModel
     , Widget
-    , GModel
-    , MModel
+    , Design
+    , Replica
     , SuperModel
     , window
     , gadget
@@ -51,7 +51,7 @@
 import qualified JavaScript.Extras as JE
 
 data Command key itemWidget
-    = RenderCommand (R.SuperModel Gasket (Model key itemWidget)) [JE.Property] J.JSVal
+    = RenderCommand (R.SuperModel (Model key itemWidget) Plan) [JE.Property] J.JSVal
     | DisposeCommand CD.SomeDisposable
     | MakerCommand (F (R.Maker (Action key itemWidget)) (Action key itemWidget))
     | ItemCommand key (R.WidgetCommand itemWidget)
@@ -61,7 +61,7 @@
     | RenderAction
     | ComponentDidUpdateAction
     | DestroyItemAction key
-    | MakeItemAction (key -> key) (key -> R.WidgetModel itemWidget)
+    | MakeItemAction (key -> key) (key -> F (R.Maker (R.WidgetAction itemWidget)) (R.WidgetModel itemWidget))
     | AddItemAction key (R.WidgetSuperModel itemWidget)
     | ItemAction key (R.WidgetAction itemWidget)
     | SetFilterAction (R.WidgetSuperModel itemWidget -> Bool)
@@ -77,7 +77,7 @@
     , _itemsFilter :: R.WidgetSuperModel itemWidget -> Bool
     }
 
-data Gasket = Gasket
+data Plan = Plan
     { _component :: R.ReactComponent
     , _onRender ::  J.Callback (J.JSVal -> IO J.JSVal)
     , _onComponentRef :: J.Callback (J.JSVal -> IO ())
@@ -85,21 +85,21 @@
     } deriving (G.Generic)
 
 makeClassyPrisms ''Action
-makeClassy ''Gasket
+makeClassy ''Plan
 makeClassy ''Model
 
-mkGasket
-    :: G.WindowT (R.WidgetGModel itemWidget) (R.ReactMlT Identity) ()
+mkPlan
+    :: G.WindowT (R.WidgetDesign itemWidget) (R.ReactMlT Identity) ()
     -> R.ReactMlT Identity ()
-    -> MModel key itemWidget
-    -> F (R.Maker (Action key itemWidget)) Gasket
-mkGasket itemWindow separator mm = Gasket
+    -> Replica key itemWidget
+    -> F (R.Maker (Action key itemWidget)) Plan
+mkPlan itemWindow separator mm = Plan
     <$> R.getComponent
     <*> (R.mkRenderer mm $ const (render itemWindow separator))
     <*> (R.mkHandler $ pure . pure . ComponentRefAction)
     <*> (R.mkHandler $ pure . pure . const ComponentDidUpdateAction)
 
-instance ( CD.Disposing (R.WidgetGasket itemWidget)
+instance ( CD.Disposing (R.WidgetPlan itemWidget)
          , CD.Disposing (R.WidgetModel itemWidget)
          ) =>
          CD.Disposing (Model key itemWidget) where
@@ -107,33 +107,33 @@
         CD.DisposeList $ foldr ((:) . CD.disposing) [] (s ^. itemsModel)
 
 mkSuperModel
-    :: G.WindowT (R.WidgetGModel itemWidget) (R.ReactMlT Identity) ()
+    :: G.WindowT (R.WidgetDesign itemWidget) (R.ReactMlT Identity) ()
     -> R.ReactMlT Identity ()
     -> Model key itemWidget
     -> F (R.Maker (Action key itemWidget)) (SuperModel key itemWidget)
-mkSuperModel itemWindow separator s = R.mkSuperModel (mkGasket itemWindow separator) $ \gkt -> R.GModel gkt s
+mkSuperModel itemWindow separator mdl = R.mkSuperModel (mkPlan itemWindow separator) (R.Design mdl)
 
 data Widget key itemWidget
 instance R.IsWidget (Widget key itemWidget) where
     type WidgetAction (Widget key itemWidget) = Action key itemWidget
     type WidgetCommand (Widget key itemWidget) = Command key itemWidget
     type WidgetModel (Widget key itemWidget) = Model key itemWidget
-    type WidgetGasket (Widget ackey itemWidget) = Gasket
-type GModel key itemWidget = R.WidgetGModel (Widget key itemWidget)
-type MModel key itemWidget = R.WidgetMModel (Widget key itemWidget)
+    type WidgetPlan (Widget key itemWidget) = Plan
+type Design key itemWidget = R.WidgetDesign (Widget key itemWidget)
+type Replica key itemWidget = R.WidgetReplica (Widget key itemWidget)
 type SuperModel key itemWidget = R.WidgetSuperModel (Widget key itemWidget)
-instance CD.Disposing Gasket
-instance HasGasket (R.GModel Gasket (Model key itemWidget)) where
-    gasket = R.widgetGasket
-instance HasModel (R.GModel Gasket (Model key itemWidget)) key itemWidget where
+instance CD.Disposing Plan
+instance HasPlan (R.Design (Model key itemWidget) Plan) where
+    plan = R.widgetPlan
+instance HasModel (R.Design (Model key itemWidget) Plan) key itemWidget where
     model = R.widgetModel
-instance HasGasket (R.SuperModel Gasket (Model key itemWidget)) where
-    gasket = R.gModel . gasket
-instance HasModel (R.SuperModel Gasket (Model key itemWidget)) key itemWidget where
-    model = R.gModel . model
+instance HasPlan (R.SuperModel (Model key itemWidget) Plan) where
+    plan = R.design . plan
+instance HasModel (R.SuperModel (Model key itemWidget) Plan) key itemWidget where
+    model = R.design . model
 
 -- | This is used by parent components to render this component
-window :: Monad m => G.WindowT (GModel key itemWidget) (R.ReactMlT m) ()
+window :: Monad m => G.WindowT (Design key itemWidget) (R.ReactMlT m) ()
 window = do
     s <- ask
     lift $ R.lf (s ^. component . to JE.toJS)
@@ -146,12 +146,12 @@
 -- | This is used by the React render callback
 render
     :: Monad m
-    => G.WindowT (R.WidgetGModel itemWidget) (R.ReactMlT m) ()
+    => G.WindowT (R.WidgetDesign itemWidget) (R.ReactMlT m) ()
     -> R.ReactMlT m ()
-    -> G.WindowT (GModel key itemWidget) (R.ReactMlT m) ()
+    -> G.WindowT (Design key itemWidget) (R.ReactMlT m) ()
 render itemWindow separator = do
     s <- ask
-    items <- fmap (view R.gModel) . filter (s ^. itemsFilter) . fmap snd .  M.toList <$> view itemsModel
+    items <- fmap (view R.design) . filter (s ^. itemsFilter) . fmap snd .  M.toList <$> view itemsModel
     lift $ R.bh (JE.strJS "ul") [ ("key", s ^. uid . to JE.toJS)
                                  , ("className", s ^. className . to JE.toJS)
                                  ] $ do
@@ -160,7 +160,7 @@
         sequenceA_ separatedWindows
 
 gadget
-    :: (Ord key, Monad m, CD.Disposing (R.WidgetModel itemWidget), CD.Disposing (R.WidgetGasket itemWidget))
+    :: (Ord key, Monad m, CD.Disposing (R.WidgetModel itemWidget), CD.Disposing (R.WidgetPlan itemWidget))
     => (R.WidgetModel itemWidget -> F (R.Maker (R.WidgetAction itemWidget)) (R.WidgetSuperModel itemWidget))
     -> G.GadgetT (R.WidgetAction itemWidget) (R.WidgetSuperModel itemWidget) m (D.DList (R.WidgetCommand itemWidget))
     -> G.GadgetT (Action key itemWidget) (SuperModel key itemWidget) m (D.DList (Command key itemWidget))
@@ -197,8 +197,8 @@
             n <- keyMaker <$> use itemKey
             itemKey .= n
             pure $ D.singleton $ MakerCommand $ do
-                sm <- hoistF (R.mapAction $ \act -> ItemAction n act) $
-                    mkItemSuperModel (itemModelMaker n)
+                sm <- hoistF (R.mapAction $ \act -> ItemAction n act) (
+                    itemModelMaker n >>= mkItemSuperModel)
                 pure $ AddItemAction n sm
 
         AddItemAction n v -> do
