diff --git a/src/DistBuilder.re b/src/DistBuilder.re
index d951856a..fd0b0cd2 100644
--- a/src/DistBuilder.re
+++ b/src/DistBuilder.re
@@ -40,6 +40,8 @@ module Styles = {
   open Css;
   let row =
     style([display(`flex), selector("div > div", [flex(`num(1.))])]);
+  let form = style([backgroundColor(hex("eee")), padding(em(1.))]);
+  let spacer = style([marginTop(em(3.))]);
 };
 
 module FieldFloat = {
@@ -70,8 +72,8 @@ let make = () => {
       ~initialState={
         guesstimatorString: "mm(5 to 20, floor(normal(20,2)), [.5, .5])",
         domainType: "Complete",
-        xPoint: "0.0",
-        excludingProbabilityMass: "",
+        xPoint: "50.0",
+        excludingProbabilityMass: "0.3",
         unitType: "UnspecifiedDistribution",
         zero: MomentRe.momentNow(),
         unit: "days",
@@ -84,125 +86,179 @@ let make = () => {
     reform.submit();
   };
 
-  
-    
-      
-      
-        
-          
-               E.ste}>
-                 e |> handleChange}>
-                  
-                    {"Complete" |> E.ste}
-                  
-                  
-                    {"LeftLimited" |> E.ste}
-                  
-                  
-                    {"RightLimited" |> E.ste}
-                  
-                  
-                    {"LeftAndRightLimited" |> E.ste}
-                  
-                
-              
-            }
-          />
-        
-        
  
-        
-          
-        
-      
-        
-          
-               E.ste}>
-                 e |> handleChange}>
-                  
-                    {"UnspecifiedDistribution" |> E.ste}
-                  
-                  
-                    {"TimeDistribution" |> E.ste}
-                  
-                
-              
-            }
-          />
-        
-        
-          
-               E.ste}>
-                 {
-                    e |> handleChange;
+  let domain =
+    switch (reform.state.values.domainType) {
+    | "Complete" => DistTypes.Complete
+    | "LeftLimited" =>
+      LeftLimited({
+        xPoint: reform.state.values.xPoint |> float_of_string,
+        excludingProbabilityMass:
+          reform.state.values.excludingProbabilityMass |> float_of_string,
+      })
+    | "RightLimited" =>
+      RightLimited({
+        xPoint: reform.state.values.xPoint |> float_of_string,
+        excludingProbabilityMass:
+          reform.state.values.excludingProbabilityMass |> float_of_string,
+      })
+    | "LeftAndRightLimited" =>
+      LeftAndRightLimited(
+        {
+          xPoint: reform.state.values.xPoint |> float_of_string,
+          excludingProbabilityMass:
+            reform.state.values.excludingProbabilityMass |> float_of_string,
+        },
+        {
+          xPoint: reform.state.values.xPoint |> float_of_string,
+          excludingProbabilityMass:
+            reform.state.values.excludingProbabilityMass |> float_of_string,
+        },
+      )
+    | _ => Js.Exn.raiseError("domain is unknown")
+    };
 
-                    _ => ();
-                  }}
-                />
-              
-            }
-          />
-        
-        
-          
-               E.ste}>
-                 e |> handleChange}>
-                  
-                    {"days" |> E.ste}
-                  
-                  
-                    {"hours" |> E.ste}
-                  
-                  
-                    {"milliseconds" |> E.ste}
-                  
-                  
-                    {"minutes" |> E.ste}
-                  
-                  
-                    {"months" |> E.ste}
-                  
-                  
-                    {"quarters" |> E.ste}
-                  
-                  
-                    {"seconds" |> E.ste}
-                  
-                  
-                    {"weeks" |> E.ste}
-                  
-                  
-                    {"years" |> E.ste}
-                  
-                
-              
-            }
-          />
-        
+  let unit =
+    switch (reform.state.values.unitType) {
+    | "UnspecifiedDistribution" => DistTypes.UnspecifiedDistribution
+    | "TimeDistribution" =>
+      TimeDistribution({
+        zero: reform.state.values.zero,
+        unit: reform.state.values.unit |> TimeTypes.TimeUnit.ofString,
+      })
+    | _ => Js.Exn.raiseError("unit is unknown")
+    };
+
+  let guesstimatorString = reform.state.values.guesstimatorString;
+
+  
+    
+    
+      
+        {DistPlusIngredients.make(~guesstimatorString, ~domain, ~unit, ())
+         |> DistPlusIngredients.toDistPlus(
+              ~sampleCount=10000,
+              ~outputXYPoints=2000,
+              ~truncateTo=Some(1000),
+            )
+         |> E.O.React.fmapOrNull(distPlus => )}
       
-      
-        {reform.state.formState == Submitting
-           ? "Loading" |> E.ste
-           : 
-               {"Submit" |> E.ste}
-             }
-      
-    
-  ;
+    
+    
+    
+      
+        
+          
+          
+            
+              
+                   E.ste}>
+                     e |> handleChange}>
+                      
+                        {"Complete" |> E.ste}
+                      
+                      
+                        {"LeftLimited" |> E.ste}
+                      
+                      
+                        {"RightLimited" |> E.ste}
+                      
+                      
+                        {"LeftAndRightLimited" |> E.ste}
+                      
+                    
+                  
+                }
+              />
+            
+            
  
+            
+              
+            
+          
+            
+              
+                   E.ste}>
+                     e |> handleChange}>
+                      
+                        {"UnspecifiedDistribution" |> E.ste}
+                      
+                      
+                        {"TimeDistribution" |> E.ste}
+                      
+                    
+                  
+                }
+              />
+            
+            
+              
+                   E.ste}>
+                     {
+                        e |> handleChange;
+
+                        _ => ();
+                      }}
+                    />
+                  
+                }
+              />
+            
+            
+              
+                   E.ste}>
+                     e |> handleChange}>
+                      
+                        {"days" |> E.ste}
+                      
+                      
+                        {"hours" |> E.ste}
+                      
+                      
+                        {"milliseconds" |> E.ste}
+                      
+                      
+                        {"minutes" |> E.ste}
+                      
+                      
+                        {"months" |> E.ste}
+                      
+                      
+                        {"quarters" |> E.ste}
+                      
+                      
+                        {"seconds" |> E.ste}
+                      
+                      
+                        {"weeks" |> E.ste}
+                      
+                      
+                        {"years" |> E.ste}
+                      
+                    
+                  
+                }
+              />
+            
+          
+    
+  
;
 };
diff --git a/src/distributions/TimeTypes.re b/src/distributions/TimeTypes.re
index 7a8368e0..3340ea32 100644
--- a/src/distributions/TimeTypes.re
+++ b/src/distributions/TimeTypes.re
@@ -33,6 +33,20 @@ module TimeUnit = {
     | `weeks => "weeks"
     | `years => "years"
     };
+
+  let ofString = (timeUnit: string) =>
+    switch (timeUnit) {
+    | "days" => `days
+    | "hours" => `hours
+    | "milliseconds" => `milliseconds
+    | "minutes" => `minutes
+    | "months" => `months
+    | "quarters" => `quarters
+    | "seconds" => `seconds
+    | "weeks" => `weeks
+    | "years" => `years
+    | _ => Js.Exn.raiseError("TimeUnit is unknown")
+    };
 };
 
 module TimePoint = {
@@ -72,4 +86,4 @@ module RelativeTimePoint = {
     | Time(r) => _timeToX(r, timeVector.zero, timeVector.unit)
     | XValue(r) => r
     };
-};
\ No newline at end of file
+};