[go: nahoru, domu]

Updates API for typography / shapes to follow colors

Test: Demos, existing tests
Change-Id: Ie0c7d1b74f9eeb6c91f4845e9f62c735577a0308
diff --git a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/SemanticsL1.kt b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/SemanticsL1.kt
index 49d2137..cb6aa17 100644
--- a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/SemanticsL1.kt
+++ b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/SemanticsL1.kt
@@ -28,7 +28,6 @@
 import androidx.ui.layout.MainAxisAlignment
 import androidx.ui.material.Button
 import androidx.ui.material.MaterialTheme
-import androidx.ui.material.themeTextStyle
 import androidx.compose.Composable
 import androidx.compose.state
 import androidx.compose.unaryPlus
@@ -193,7 +192,7 @@
     val primary = actions.firstOrNull { it.types.contains(AccessibilityAction.Primary) }
     val secondary =
         actions.firstOrNull { it.types.contains(AccessibilityAction.Secondary) }
-    Text(text = "Accessibility Actions By Type", style = +themeTextStyle { h6.copy() })
+    Text(text = "Accessibility Actions By Type", style = (+MaterialTheme.typography()).h6)
     Row(
         ExpandedWidth,
         mainAxisAlignment = MainAxisAlignment.SpaceEvenly
@@ -214,7 +213,7 @@
 private fun InvokeActionsByPhrase(actions: Set<SemanticAction<out Any?>> = setOf()) {
     Text(
         text = "Accessibility Actions By Phrase",
-        style = +themeTextStyle { h6.copy() })
+        style = (+MaterialTheme.typography()).h6)
     Row(
         ExpandedWidth,
         mainAxisAlignment = MainAxisAlignment.SpaceEvenly
@@ -234,7 +233,7 @@
 private fun InvokeActionsByAssistantAction(actions: Set<SemanticAction<out Any?>> = setOf()) {
     val positive = actions.firstOrNull { it.types.contains(PolarityAction.Positive) }
     val negative = actions.firstOrNull { it.types.contains(PolarityAction.Negative) }
-    Text(text = "Assistant Actions", style = +themeTextStyle { h6.copy() })
+    Text(text = "Assistant Actions", style = (+MaterialTheme.typography()).h6)
     Row(
         ExpandedWidth,
         mainAxisAlignment = MainAxisAlignment.SpaceEvenly
@@ -261,7 +260,7 @@
     @Suppress("UNCHECKED_CAST")
     val unitAction =
         actions.firstOrNull { it.defaultParam is Unit } as SemanticAction<Unit>?
-    Text(text = "Actions using Parameters", style = +themeTextStyle { h6.copy() })
+    Text(text = "Actions using Parameters", style = (+MaterialTheme.typography()).h6)
     Row(
         ExpandedWidth,
         mainAxisAlignment = MainAxisAlignment.SpaceEvenly
diff --git a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/autofill/ExplicitAutofillTypesActivity.kt b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/autofill/ExplicitAutofillTypesActivity.kt
index 8717940..fd5be7d 100644
--- a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/autofill/ExplicitAutofillTypesActivity.kt
+++ b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/autofill/ExplicitAutofillTypesActivity.kt
@@ -29,7 +29,6 @@
 import androidx.ui.core.AutofillTreeAmbient
 import androidx.ui.core.TextField
 import androidx.ui.core.Text
-import androidx.ui.material.themeTextStyle
 import androidx.ui.core.LayoutCoordinates
 import androidx.ui.core.OnChildPositioned
 import androidx.ui.core.PxPosition
@@ -53,8 +52,8 @@
                     val nameState = +state { "Enter name here" }
                     val emailState = +state { "Enter email here" }
                     val autofill = +ambient(AutofillAmbient)
-                    val labelStyle = +themeTextStyle { subtitle1.copy() }
-                    val textStyle = +themeTextStyle { h6.copy() }
+                    val labelStyle = (+MaterialTheme.typography()).subtitle1
+                    val textStyle = (+MaterialTheme.typography()).h6
 
                     Text("Name", style = labelStyle)
                     Autofill(
diff --git a/ui/ui-material/api/0.1.0-dev03.txt b/ui/ui-material/api/0.1.0-dev03.txt
index 3a98b93..8eb5acc 100644
--- a/ui/ui-material/api/0.1.0-dev03.txt
+++ b/ui/ui-material/api/0.1.0-dev03.txt
@@ -15,15 +15,9 @@
   public final class AppBarKt {
     ctor public AppBarKt();
     method public static void AppBarIcon(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick);
-    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
-    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
-    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
+    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
+    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
+    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
   }
 
   public final class BottomAppBar {
@@ -44,25 +38,9 @@
     ctor public ButtonKt();
     method public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static void Button(String text, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle());
-    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
-    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border(+themeColor({ 
-    onSurface.copy(OutlinedStrokeOpacity)
-}), 1.dp), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
-    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
+    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
+    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border((+MaterialTheme.colors()).onSurface.copy(OutlinedStrokeOpacity), 1.dp), androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
+    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = button, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
   }
 
   public final class ButtonStyle {
@@ -86,12 +64,40 @@
 
   public final class CheckboxKt {
     ctor public CheckboxKt();
-    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
-    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+  }
+
+  public final class ColorKt {
+    ctor public ColorKt();
+    method public static androidx.ui.material.ColorPalette ColorPalette(androidx.ui.graphics.Color primary = Color(4284612846), androidx.ui.graphics.Color primaryVariant = Color(4281794739), androidx.ui.graphics.Color secondary = Color(4278442694), androidx.ui.graphics.Color secondaryVariant = Color(4278290310), androidx.ui.graphics.Color background = Color.White, androidx.ui.graphics.Color surface = Color.White, androidx.ui.graphics.Color error = Color(4289724448), androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color >
+  }
+
+  public interface ColorPalette {
+    method public androidx.ui.graphics.Color getBackground();
+    method public androidx.ui.graphics.Color getError();
+    method public androidx.ui.graphics.Color getOnBackground();
+    method public androidx.ui.graphics.Color getOnError();
+    method public androidx.ui.graphics.Color getOnPrimary();
+    method public androidx.ui.graphics.Color getOnSecondary();
+    method public androidx.ui.graphics.Color getOnSurface();
+    method public androidx.ui.graphics.Color getPrimary();
+    method public androidx.ui.graphics.Color getPrimaryVariant();
+    method public androidx.ui.graphics.Color getSecondary();
+    method public androidx.ui.graphics.Color getSecondaryVariant();
+    method public androidx.ui.graphics.Color getSurface();
+    property public abstract androidx.ui.graphics.Color background;
+    property public abstract androidx.ui.graphics.Color error;
+    property public abstract androidx.ui.graphics.Color onBackground;
+    property public abstract androidx.ui.graphics.Color onError;
+    property public abstract androidx.ui.graphics.Color onPrimary;
+    property public abstract androidx.ui.graphics.Color onSecondary;
+    property public abstract androidx.ui.graphics.Color onSurface;
+    property public abstract androidx.ui.graphics.Color primary;
+    property public abstract androidx.ui.graphics.Color primaryVariant;
+    property public abstract androidx.ui.graphics.Color secondary;
+    property public abstract androidx.ui.graphics.Color secondaryVariant;
+    property public abstract androidx.ui.graphics.Color surface;
   }
 
   public final class DataTableChildren {
@@ -103,9 +109,7 @@
 
   public final class DataTableKt {
     ctor public DataTableKt();
-    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = +themeColor({ 
-    primary.copy(0.08)
-}), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
+    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = (+MaterialTheme.colors()).primary.copy(0.08), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
     method public static androidx.ui.material.DataTablePagination DefaultDataTablePagination(int initialPage = 0, int initialRowsPerPage, java.util.List<java.lang.Integer> availableRowsPerPage);
     method public static androidx.ui.material.DataTableSorting DefaultDataTableSorting(Integer? initialColumn = null, boolean initialAscending = true, java.util.Set<java.lang.Integer> sortableColumns, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> onSortRequest);
   }
@@ -140,9 +144,7 @@
 
   public final class DividerKt {
     ctor public DividerKt();
-    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = +themeColor({ 
-    onSurface
-}), androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
+    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
   }
 
   public final class DrawerKt {
@@ -159,15 +161,9 @@
 
   public final class FloatingActionButtonKt {
     ctor public FloatingActionButtonKt();
-    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
-    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
     method public static androidx.ui.core.Dp getExtendedFabHeight();
     method public static androidx.ui.core.Dp getExtendedFabIconPadding();
     method public static androidx.ui.core.Dp getExtendedFabTextPadding();
@@ -180,116 +176,45 @@
     method public static void ListItem(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit>? icon = null, kotlin.jvm.functions.Function0<kotlin.Unit>? secondaryText = null, boolean singleLineSecondaryText = true, kotlin.jvm.functions.Function0<kotlin.Unit>? overlineText = null, kotlin.jvm.functions.Function0<kotlin.Unit>? trailing = null, kotlin.jvm.functions.Function0<kotlin.Unit>? >
   }
 
-  public final class MaterialColors {
-    ctor public MaterialColors(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    ctor public MaterialColors();
-    method public androidx.ui.graphics.Color component1();
-    method public androidx.ui.graphics.Color component10();
-    method public androidx.ui.graphics.Color component11();
-    method public androidx.ui.graphics.Color component12();
-    method public androidx.ui.graphics.Color component2();
-    method public androidx.ui.graphics.Color component3();
-    method public androidx.ui.graphics.Color component4();
-    method public androidx.ui.graphics.Color component5();
-    method public androidx.ui.graphics.Color component6();
-    method public androidx.ui.graphics.Color component7();
-    method public androidx.ui.graphics.Color component8();
-    method public androidx.ui.graphics.Color component9();
-    method public androidx.ui.material.MaterialColors copy(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    method public androidx.ui.graphics.Color getBackground();
-    method public androidx.ui.graphics.Color getError();
-    method public androidx.ui.graphics.Color getOnBackground();
-    method public androidx.ui.graphics.Color getOnError();
-    method public androidx.ui.graphics.Color getOnPrimary();
-    method public androidx.ui.graphics.Color getOnSecondary();
-    method public androidx.ui.graphics.Color getOnSurface();
-    method public androidx.ui.graphics.Color getPrimary();
-    method public androidx.ui.graphics.Color getPrimaryVariant();
-    method public androidx.ui.graphics.Color getSecondary();
-    method public androidx.ui.graphics.Color getSecondaryVariant();
-    method public androidx.ui.graphics.Color getSurface();
+  public final class MaterialTheme {
+    method public androidx.compose.Effect<androidx.ui.material.ColorPalette> colors();
+    method public androidx.compose.Effect<androidx.ui.material.Shapes> shapes();
+    method public androidx.compose.Effect<androidx.ui.material.Typography> typography();
+    field public static final androidx.ui.material.MaterialTheme! INSTANCE;
   }
 
   public final class MaterialThemeKt {
     ctor public MaterialThemeKt();
-    method public static void MaterialShapeTheme(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void MaterialTheme(androidx.ui.material.MaterialColors colors = androidx.ui.material.MaterialColors(), androidx.ui.material.MaterialTypography typography = androidx.ui.material.MaterialTypography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialColors> getColors();
-    method public static androidx.compose.Ambient<androidx.ui.material.Shapes> getCurrentShapeAmbient();
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialTypography> getTypography();
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.graphics.Color> themeColor(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialColors,androidx.ui.graphics.Color> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.engine.geometry.Shape> themeShape(kotlin.jvm.functions.Function1<? super androidx.ui.material.Shapes,? extends androidx.ui.engine.geometry.Shape> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.text.TextStyle> themeTextStyle(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialTypography,androidx.ui.text.TextStyle> choosingBlock);
-  }
-
-  public final class MaterialTypography {
-    ctor public MaterialTypography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    ctor public MaterialTypography();
-    method public androidx.ui.text.TextStyle component1();
-    method public androidx.ui.text.TextStyle component10();
-    method public androidx.ui.text.TextStyle component11();
-    method public androidx.ui.text.TextStyle component12();
-    method public androidx.ui.text.TextStyle component13();
-    method public androidx.ui.text.TextStyle component2();
-    method public androidx.ui.text.TextStyle component3();
-    method public androidx.ui.text.TextStyle component4();
-    method public androidx.ui.text.TextStyle component5();
-    method public androidx.ui.text.TextStyle component6();
-    method public androidx.ui.text.TextStyle component7();
-    method public androidx.ui.text.TextStyle component8();
-    method public androidx.ui.text.TextStyle component9();
-    method public androidx.ui.material.MaterialTypography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    method public androidx.ui.text.TextStyle getBody1();
-    method public androidx.ui.text.TextStyle getBody2();
-    method public androidx.ui.text.TextStyle getButton();
-    method public androidx.ui.text.TextStyle getCaption();
-    method public androidx.ui.text.TextStyle getH1();
-    method public androidx.ui.text.TextStyle getH2();
-    method public androidx.ui.text.TextStyle getH3();
-    method public androidx.ui.text.TextStyle getH4();
-    method public androidx.ui.text.TextStyle getH5();
-    method public androidx.ui.text.TextStyle getH6();
-    method public androidx.ui.text.TextStyle getOverline();
-    method public androidx.ui.text.TextStyle getSubtitle1();
-    method public androidx.ui.text.TextStyle getSubtitle2();
+    method public static void MaterialTheme(androidx.ui.material.ColorPalette colors = ColorPalette(), androidx.ui.material.Typography typography = androidx.ui.material.Typography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class ProgressIndicatorKt {
     ctor public ProgressIndicatorKt();
-    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
+    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
   }
 
   public final class RadioButtonKt {
     ctor public RadioButtonKt();
-    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
     method public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> children);
-    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
   }
 
   public final class RadioGroupScope {
     method public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
+  }
+
+  public final class ShapeKt {
+    ctor public ShapeKt();
   }
 
   public final class Shapes {
     ctor public Shapes(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
+    ctor public Shapes();
     method public androidx.ui.engine.geometry.Shape component1();
     method public androidx.ui.engine.geometry.Shape component2();
     method public androidx.ui.material.Shapes copy(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
@@ -299,9 +224,7 @@
 
   public final class SwitchKt {
     ctor public SwitchKt();
-    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondaryVariant
-}));
+    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondaryVariant);
   }
 
   public final class TabKt {
@@ -334,6 +257,42 @@
     method public static androidx.ui.text.TextStyle withOpacity(androidx.ui.text.TextStyle, @FloatRange(from=0.0, to=1.0) float opacity);
   }
 
+  public final class Typography {
+    ctor public Typography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    ctor public Typography();
+    method public androidx.ui.text.TextStyle component1();
+    method public androidx.ui.text.TextStyle component10();
+    method public androidx.ui.text.TextStyle component11();
+    method public androidx.ui.text.TextStyle component12();
+    method public androidx.ui.text.TextStyle component13();
+    method public androidx.ui.text.TextStyle component2();
+    method public androidx.ui.text.TextStyle component3();
+    method public androidx.ui.text.TextStyle component4();
+    method public androidx.ui.text.TextStyle component5();
+    method public androidx.ui.text.TextStyle component6();
+    method public androidx.ui.text.TextStyle component7();
+    method public androidx.ui.text.TextStyle component8();
+    method public androidx.ui.text.TextStyle component9();
+    method public androidx.ui.material.Typography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    method public androidx.ui.text.TextStyle getBody1();
+    method public androidx.ui.text.TextStyle getBody2();
+    method public androidx.ui.text.TextStyle getButton();
+    method public androidx.ui.text.TextStyle getCaption();
+    method public androidx.ui.text.TextStyle getH1();
+    method public androidx.ui.text.TextStyle getH2();
+    method public androidx.ui.text.TextStyle getH3();
+    method public androidx.ui.text.TextStyle getH4();
+    method public androidx.ui.text.TextStyle getH5();
+    method public androidx.ui.text.TextStyle getH6();
+    method public androidx.ui.text.TextStyle getOverline();
+    method public androidx.ui.text.TextStyle getSubtitle1();
+    method public androidx.ui.text.TextStyle getSubtitle2();
+  }
+
+  public final class TypographyKt {
+    ctor public TypographyKt();
+  }
+
 }
 
 package androidx.ui.material.internal {
@@ -392,18 +351,12 @@
 
   public final class CardKt {
     ctor public CardKt();
-    method public static void Card(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    card
-}), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Card(androidx.ui.engine.geometry.Shape shape = card, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class SurfaceKt {
     ctor public SurfaceKt();
-    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static androidx.compose.Ambient<androidx.ui.graphics.Color> getCurrentBackground();
   }
 
diff --git a/ui/ui-material/api/current.txt b/ui/ui-material/api/current.txt
index 3a98b93..8eb5acc 100644
--- a/ui/ui-material/api/current.txt
+++ b/ui/ui-material/api/current.txt
@@ -15,15 +15,9 @@
   public final class AppBarKt {
     ctor public AppBarKt();
     method public static void AppBarIcon(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick);
-    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
-    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
-    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
+    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
+    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
+    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
   }
 
   public final class BottomAppBar {
@@ -44,25 +38,9 @@
     ctor public ButtonKt();
     method public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static void Button(String text, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle());
-    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
-    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border(+themeColor({ 
-    onSurface.copy(OutlinedStrokeOpacity)
-}), 1.dp), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
-    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
+    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
+    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border((+MaterialTheme.colors()).onSurface.copy(OutlinedStrokeOpacity), 1.dp), androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
+    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = button, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
   }
 
   public final class ButtonStyle {
@@ -86,12 +64,40 @@
 
   public final class CheckboxKt {
     ctor public CheckboxKt();
-    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
-    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+  }
+
+  public final class ColorKt {
+    ctor public ColorKt();
+    method public static androidx.ui.material.ColorPalette ColorPalette(androidx.ui.graphics.Color primary = Color(4284612846), androidx.ui.graphics.Color primaryVariant = Color(4281794739), androidx.ui.graphics.Color secondary = Color(4278442694), androidx.ui.graphics.Color secondaryVariant = Color(4278290310), androidx.ui.graphics.Color background = Color.White, androidx.ui.graphics.Color surface = Color.White, androidx.ui.graphics.Color error = Color(4289724448), androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color >
+  }
+
+  public interface ColorPalette {
+    method public androidx.ui.graphics.Color getBackground();
+    method public androidx.ui.graphics.Color getError();
+    method public androidx.ui.graphics.Color getOnBackground();
+    method public androidx.ui.graphics.Color getOnError();
+    method public androidx.ui.graphics.Color getOnPrimary();
+    method public androidx.ui.graphics.Color getOnSecondary();
+    method public androidx.ui.graphics.Color getOnSurface();
+    method public androidx.ui.graphics.Color getPrimary();
+    method public androidx.ui.graphics.Color getPrimaryVariant();
+    method public androidx.ui.graphics.Color getSecondary();
+    method public androidx.ui.graphics.Color getSecondaryVariant();
+    method public androidx.ui.graphics.Color getSurface();
+    property public abstract androidx.ui.graphics.Color background;
+    property public abstract androidx.ui.graphics.Color error;
+    property public abstract androidx.ui.graphics.Color onBackground;
+    property public abstract androidx.ui.graphics.Color onError;
+    property public abstract androidx.ui.graphics.Color onPrimary;
+    property public abstract androidx.ui.graphics.Color onSecondary;
+    property public abstract androidx.ui.graphics.Color onSurface;
+    property public abstract androidx.ui.graphics.Color primary;
+    property public abstract androidx.ui.graphics.Color primaryVariant;
+    property public abstract androidx.ui.graphics.Color secondary;
+    property public abstract androidx.ui.graphics.Color secondaryVariant;
+    property public abstract androidx.ui.graphics.Color surface;
   }
 
   public final class DataTableChildren {
@@ -103,9 +109,7 @@
 
   public final class DataTableKt {
     ctor public DataTableKt();
-    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = +themeColor({ 
-    primary.copy(0.08)
-}), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
+    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = (+MaterialTheme.colors()).primary.copy(0.08), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
     method public static androidx.ui.material.DataTablePagination DefaultDataTablePagination(int initialPage = 0, int initialRowsPerPage, java.util.List<java.lang.Integer> availableRowsPerPage);
     method public static androidx.ui.material.DataTableSorting DefaultDataTableSorting(Integer? initialColumn = null, boolean initialAscending = true, java.util.Set<java.lang.Integer> sortableColumns, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> onSortRequest);
   }
@@ -140,9 +144,7 @@
 
   public final class DividerKt {
     ctor public DividerKt();
-    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = +themeColor({ 
-    onSurface
-}), androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
+    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
   }
 
   public final class DrawerKt {
@@ -159,15 +161,9 @@
 
   public final class FloatingActionButtonKt {
     ctor public FloatingActionButtonKt();
-    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
-    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
     method public static androidx.ui.core.Dp getExtendedFabHeight();
     method public static androidx.ui.core.Dp getExtendedFabIconPadding();
     method public static androidx.ui.core.Dp getExtendedFabTextPadding();
@@ -180,116 +176,45 @@
     method public static void ListItem(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit>? icon = null, kotlin.jvm.functions.Function0<kotlin.Unit>? secondaryText = null, boolean singleLineSecondaryText = true, kotlin.jvm.functions.Function0<kotlin.Unit>? overlineText = null, kotlin.jvm.functions.Function0<kotlin.Unit>? trailing = null, kotlin.jvm.functions.Function0<kotlin.Unit>? >
   }
 
-  public final class MaterialColors {
-    ctor public MaterialColors(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    ctor public MaterialColors();
-    method public androidx.ui.graphics.Color component1();
-    method public androidx.ui.graphics.Color component10();
-    method public androidx.ui.graphics.Color component11();
-    method public androidx.ui.graphics.Color component12();
-    method public androidx.ui.graphics.Color component2();
-    method public androidx.ui.graphics.Color component3();
-    method public androidx.ui.graphics.Color component4();
-    method public androidx.ui.graphics.Color component5();
-    method public androidx.ui.graphics.Color component6();
-    method public androidx.ui.graphics.Color component7();
-    method public androidx.ui.graphics.Color component8();
-    method public androidx.ui.graphics.Color component9();
-    method public androidx.ui.material.MaterialColors copy(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    method public androidx.ui.graphics.Color getBackground();
-    method public androidx.ui.graphics.Color getError();
-    method public androidx.ui.graphics.Color getOnBackground();
-    method public androidx.ui.graphics.Color getOnError();
-    method public androidx.ui.graphics.Color getOnPrimary();
-    method public androidx.ui.graphics.Color getOnSecondary();
-    method public androidx.ui.graphics.Color getOnSurface();
-    method public androidx.ui.graphics.Color getPrimary();
-    method public androidx.ui.graphics.Color getPrimaryVariant();
-    method public androidx.ui.graphics.Color getSecondary();
-    method public androidx.ui.graphics.Color getSecondaryVariant();
-    method public androidx.ui.graphics.Color getSurface();
+  public final class MaterialTheme {
+    method public androidx.compose.Effect<androidx.ui.material.ColorPalette> colors();
+    method public androidx.compose.Effect<androidx.ui.material.Shapes> shapes();
+    method public androidx.compose.Effect<androidx.ui.material.Typography> typography();
+    field public static final androidx.ui.material.MaterialTheme! INSTANCE;
   }
 
   public final class MaterialThemeKt {
     ctor public MaterialThemeKt();
-    method public static void MaterialShapeTheme(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void MaterialTheme(androidx.ui.material.MaterialColors colors = androidx.ui.material.MaterialColors(), androidx.ui.material.MaterialTypography typography = androidx.ui.material.MaterialTypography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialColors> getColors();
-    method public static androidx.compose.Ambient<androidx.ui.material.Shapes> getCurrentShapeAmbient();
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialTypography> getTypography();
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.graphics.Color> themeColor(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialColors,androidx.ui.graphics.Color> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.engine.geometry.Shape> themeShape(kotlin.jvm.functions.Function1<? super androidx.ui.material.Shapes,? extends androidx.ui.engine.geometry.Shape> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.text.TextStyle> themeTextStyle(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialTypography,androidx.ui.text.TextStyle> choosingBlock);
-  }
-
-  public final class MaterialTypography {
-    ctor public MaterialTypography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    ctor public MaterialTypography();
-    method public androidx.ui.text.TextStyle component1();
-    method public androidx.ui.text.TextStyle component10();
-    method public androidx.ui.text.TextStyle component11();
-    method public androidx.ui.text.TextStyle component12();
-    method public androidx.ui.text.TextStyle component13();
-    method public androidx.ui.text.TextStyle component2();
-    method public androidx.ui.text.TextStyle component3();
-    method public androidx.ui.text.TextStyle component4();
-    method public androidx.ui.text.TextStyle component5();
-    method public androidx.ui.text.TextStyle component6();
-    method public androidx.ui.text.TextStyle component7();
-    method public androidx.ui.text.TextStyle component8();
-    method public androidx.ui.text.TextStyle component9();
-    method public androidx.ui.material.MaterialTypography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    method public androidx.ui.text.TextStyle getBody1();
-    method public androidx.ui.text.TextStyle getBody2();
-    method public androidx.ui.text.TextStyle getButton();
-    method public androidx.ui.text.TextStyle getCaption();
-    method public androidx.ui.text.TextStyle getH1();
-    method public androidx.ui.text.TextStyle getH2();
-    method public androidx.ui.text.TextStyle getH3();
-    method public androidx.ui.text.TextStyle getH4();
-    method public androidx.ui.text.TextStyle getH5();
-    method public androidx.ui.text.TextStyle getH6();
-    method public androidx.ui.text.TextStyle getOverline();
-    method public androidx.ui.text.TextStyle getSubtitle1();
-    method public androidx.ui.text.TextStyle getSubtitle2();
+    method public static void MaterialTheme(androidx.ui.material.ColorPalette colors = ColorPalette(), androidx.ui.material.Typography typography = androidx.ui.material.Typography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class ProgressIndicatorKt {
     ctor public ProgressIndicatorKt();
-    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
+    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
   }
 
   public final class RadioButtonKt {
     ctor public RadioButtonKt();
-    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
     method public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> children);
-    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
   }
 
   public final class RadioGroupScope {
     method public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
+  }
+
+  public final class ShapeKt {
+    ctor public ShapeKt();
   }
 
   public final class Shapes {
     ctor public Shapes(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
+    ctor public Shapes();
     method public androidx.ui.engine.geometry.Shape component1();
     method public androidx.ui.engine.geometry.Shape component2();
     method public androidx.ui.material.Shapes copy(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
@@ -299,9 +224,7 @@
 
   public final class SwitchKt {
     ctor public SwitchKt();
-    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondaryVariant
-}));
+    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondaryVariant);
   }
 
   public final class TabKt {
@@ -334,6 +257,42 @@
     method public static androidx.ui.text.TextStyle withOpacity(androidx.ui.text.TextStyle, @FloatRange(from=0.0, to=1.0) float opacity);
   }
 
+  public final class Typography {
+    ctor public Typography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    ctor public Typography();
+    method public androidx.ui.text.TextStyle component1();
+    method public androidx.ui.text.TextStyle component10();
+    method public androidx.ui.text.TextStyle component11();
+    method public androidx.ui.text.TextStyle component12();
+    method public androidx.ui.text.TextStyle component13();
+    method public androidx.ui.text.TextStyle component2();
+    method public androidx.ui.text.TextStyle component3();
+    method public androidx.ui.text.TextStyle component4();
+    method public androidx.ui.text.TextStyle component5();
+    method public androidx.ui.text.TextStyle component6();
+    method public androidx.ui.text.TextStyle component7();
+    method public androidx.ui.text.TextStyle component8();
+    method public androidx.ui.text.TextStyle component9();
+    method public androidx.ui.material.Typography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    method public androidx.ui.text.TextStyle getBody1();
+    method public androidx.ui.text.TextStyle getBody2();
+    method public androidx.ui.text.TextStyle getButton();
+    method public androidx.ui.text.TextStyle getCaption();
+    method public androidx.ui.text.TextStyle getH1();
+    method public androidx.ui.text.TextStyle getH2();
+    method public androidx.ui.text.TextStyle getH3();
+    method public androidx.ui.text.TextStyle getH4();
+    method public androidx.ui.text.TextStyle getH5();
+    method public androidx.ui.text.TextStyle getH6();
+    method public androidx.ui.text.TextStyle getOverline();
+    method public androidx.ui.text.TextStyle getSubtitle1();
+    method public androidx.ui.text.TextStyle getSubtitle2();
+  }
+
+  public final class TypographyKt {
+    ctor public TypographyKt();
+  }
+
 }
 
 package androidx.ui.material.internal {
@@ -392,18 +351,12 @@
 
   public final class CardKt {
     ctor public CardKt();
-    method public static void Card(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    card
-}), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Card(androidx.ui.engine.geometry.Shape shape = card, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class SurfaceKt {
     ctor public SurfaceKt();
-    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static androidx.compose.Ambient<androidx.ui.graphics.Color> getCurrentBackground();
   }
 
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev03.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev03.txt
index 3a98b93..8eb5acc 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev03.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev03.txt
@@ -15,15 +15,9 @@
   public final class AppBarKt {
     ctor public AppBarKt();
     method public static void AppBarIcon(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick);
-    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
-    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
-    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
+    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
+    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
+    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
   }
 
   public final class BottomAppBar {
@@ -44,25 +38,9 @@
     ctor public ButtonKt();
     method public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static void Button(String text, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle());
-    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
-    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border(+themeColor({ 
-    onSurface.copy(OutlinedStrokeOpacity)
-}), 1.dp), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
-    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
+    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
+    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border((+MaterialTheme.colors()).onSurface.copy(OutlinedStrokeOpacity), 1.dp), androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
+    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = button, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
   }
 
   public final class ButtonStyle {
@@ -86,12 +64,40 @@
 
   public final class CheckboxKt {
     ctor public CheckboxKt();
-    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
-    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+  }
+
+  public final class ColorKt {
+    ctor public ColorKt();
+    method public static androidx.ui.material.ColorPalette ColorPalette(androidx.ui.graphics.Color primary = Color(4284612846), androidx.ui.graphics.Color primaryVariant = Color(4281794739), androidx.ui.graphics.Color secondary = Color(4278442694), androidx.ui.graphics.Color secondaryVariant = Color(4278290310), androidx.ui.graphics.Color background = Color.White, androidx.ui.graphics.Color surface = Color.White, androidx.ui.graphics.Color error = Color(4289724448), androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color >
+  }
+
+  public interface ColorPalette {
+    method public androidx.ui.graphics.Color getBackground();
+    method public androidx.ui.graphics.Color getError();
+    method public androidx.ui.graphics.Color getOnBackground();
+    method public androidx.ui.graphics.Color getOnError();
+    method public androidx.ui.graphics.Color getOnPrimary();
+    method public androidx.ui.graphics.Color getOnSecondary();
+    method public androidx.ui.graphics.Color getOnSurface();
+    method public androidx.ui.graphics.Color getPrimary();
+    method public androidx.ui.graphics.Color getPrimaryVariant();
+    method public androidx.ui.graphics.Color getSecondary();
+    method public androidx.ui.graphics.Color getSecondaryVariant();
+    method public androidx.ui.graphics.Color getSurface();
+    property public abstract androidx.ui.graphics.Color background;
+    property public abstract androidx.ui.graphics.Color error;
+    property public abstract androidx.ui.graphics.Color onBackground;
+    property public abstract androidx.ui.graphics.Color onError;
+    property public abstract androidx.ui.graphics.Color onPrimary;
+    property public abstract androidx.ui.graphics.Color onSecondary;
+    property public abstract androidx.ui.graphics.Color onSurface;
+    property public abstract androidx.ui.graphics.Color primary;
+    property public abstract androidx.ui.graphics.Color primaryVariant;
+    property public abstract androidx.ui.graphics.Color secondary;
+    property public abstract androidx.ui.graphics.Color secondaryVariant;
+    property public abstract androidx.ui.graphics.Color surface;
   }
 
   public final class DataTableChildren {
@@ -103,9 +109,7 @@
 
   public final class DataTableKt {
     ctor public DataTableKt();
-    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = +themeColor({ 
-    primary.copy(0.08)
-}), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
+    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = (+MaterialTheme.colors()).primary.copy(0.08), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
     method public static androidx.ui.material.DataTablePagination DefaultDataTablePagination(int initialPage = 0, int initialRowsPerPage, java.util.List<java.lang.Integer> availableRowsPerPage);
     method public static androidx.ui.material.DataTableSorting DefaultDataTableSorting(Integer? initialColumn = null, boolean initialAscending = true, java.util.Set<java.lang.Integer> sortableColumns, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> onSortRequest);
   }
@@ -140,9 +144,7 @@
 
   public final class DividerKt {
     ctor public DividerKt();
-    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = +themeColor({ 
-    onSurface
-}), androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
+    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
   }
 
   public final class DrawerKt {
@@ -159,15 +161,9 @@
 
   public final class FloatingActionButtonKt {
     ctor public FloatingActionButtonKt();
-    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
-    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
     method public static androidx.ui.core.Dp getExtendedFabHeight();
     method public static androidx.ui.core.Dp getExtendedFabIconPadding();
     method public static androidx.ui.core.Dp getExtendedFabTextPadding();
@@ -180,116 +176,45 @@
     method public static void ListItem(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit>? icon = null, kotlin.jvm.functions.Function0<kotlin.Unit>? secondaryText = null, boolean singleLineSecondaryText = true, kotlin.jvm.functions.Function0<kotlin.Unit>? overlineText = null, kotlin.jvm.functions.Function0<kotlin.Unit>? trailing = null, kotlin.jvm.functions.Function0<kotlin.Unit>? >
   }
 
-  public final class MaterialColors {
-    ctor public MaterialColors(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    ctor public MaterialColors();
-    method public androidx.ui.graphics.Color component1();
-    method public androidx.ui.graphics.Color component10();
-    method public androidx.ui.graphics.Color component11();
-    method public androidx.ui.graphics.Color component12();
-    method public androidx.ui.graphics.Color component2();
-    method public androidx.ui.graphics.Color component3();
-    method public androidx.ui.graphics.Color component4();
-    method public androidx.ui.graphics.Color component5();
-    method public androidx.ui.graphics.Color component6();
-    method public androidx.ui.graphics.Color component7();
-    method public androidx.ui.graphics.Color component8();
-    method public androidx.ui.graphics.Color component9();
-    method public androidx.ui.material.MaterialColors copy(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    method public androidx.ui.graphics.Color getBackground();
-    method public androidx.ui.graphics.Color getError();
-    method public androidx.ui.graphics.Color getOnBackground();
-    method public androidx.ui.graphics.Color getOnError();
-    method public androidx.ui.graphics.Color getOnPrimary();
-    method public androidx.ui.graphics.Color getOnSecondary();
-    method public androidx.ui.graphics.Color getOnSurface();
-    method public androidx.ui.graphics.Color getPrimary();
-    method public androidx.ui.graphics.Color getPrimaryVariant();
-    method public androidx.ui.graphics.Color getSecondary();
-    method public androidx.ui.graphics.Color getSecondaryVariant();
-    method public androidx.ui.graphics.Color getSurface();
+  public final class MaterialTheme {
+    method public androidx.compose.Effect<androidx.ui.material.ColorPalette> colors();
+    method public androidx.compose.Effect<androidx.ui.material.Shapes> shapes();
+    method public androidx.compose.Effect<androidx.ui.material.Typography> typography();
+    field public static final androidx.ui.material.MaterialTheme! INSTANCE;
   }
 
   public final class MaterialThemeKt {
     ctor public MaterialThemeKt();
-    method public static void MaterialShapeTheme(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void MaterialTheme(androidx.ui.material.MaterialColors colors = androidx.ui.material.MaterialColors(), androidx.ui.material.MaterialTypography typography = androidx.ui.material.MaterialTypography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialColors> getColors();
-    method public static androidx.compose.Ambient<androidx.ui.material.Shapes> getCurrentShapeAmbient();
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialTypography> getTypography();
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.graphics.Color> themeColor(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialColors,androidx.ui.graphics.Color> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.engine.geometry.Shape> themeShape(kotlin.jvm.functions.Function1<? super androidx.ui.material.Shapes,? extends androidx.ui.engine.geometry.Shape> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.text.TextStyle> themeTextStyle(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialTypography,androidx.ui.text.TextStyle> choosingBlock);
-  }
-
-  public final class MaterialTypography {
-    ctor public MaterialTypography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    ctor public MaterialTypography();
-    method public androidx.ui.text.TextStyle component1();
-    method public androidx.ui.text.TextStyle component10();
-    method public androidx.ui.text.TextStyle component11();
-    method public androidx.ui.text.TextStyle component12();
-    method public androidx.ui.text.TextStyle component13();
-    method public androidx.ui.text.TextStyle component2();
-    method public androidx.ui.text.TextStyle component3();
-    method public androidx.ui.text.TextStyle component4();
-    method public androidx.ui.text.TextStyle component5();
-    method public androidx.ui.text.TextStyle component6();
-    method public androidx.ui.text.TextStyle component7();
-    method public androidx.ui.text.TextStyle component8();
-    method public androidx.ui.text.TextStyle component9();
-    method public androidx.ui.material.MaterialTypography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    method public androidx.ui.text.TextStyle getBody1();
-    method public androidx.ui.text.TextStyle getBody2();
-    method public androidx.ui.text.TextStyle getButton();
-    method public androidx.ui.text.TextStyle getCaption();
-    method public androidx.ui.text.TextStyle getH1();
-    method public androidx.ui.text.TextStyle getH2();
-    method public androidx.ui.text.TextStyle getH3();
-    method public androidx.ui.text.TextStyle getH4();
-    method public androidx.ui.text.TextStyle getH5();
-    method public androidx.ui.text.TextStyle getH6();
-    method public androidx.ui.text.TextStyle getOverline();
-    method public androidx.ui.text.TextStyle getSubtitle1();
-    method public androidx.ui.text.TextStyle getSubtitle2();
+    method public static void MaterialTheme(androidx.ui.material.ColorPalette colors = ColorPalette(), androidx.ui.material.Typography typography = androidx.ui.material.Typography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class ProgressIndicatorKt {
     ctor public ProgressIndicatorKt();
-    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
+    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
   }
 
   public final class RadioButtonKt {
     ctor public RadioButtonKt();
-    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
     method public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> children);
-    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
   }
 
   public final class RadioGroupScope {
     method public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
+  }
+
+  public final class ShapeKt {
+    ctor public ShapeKt();
   }
 
   public final class Shapes {
     ctor public Shapes(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
+    ctor public Shapes();
     method public androidx.ui.engine.geometry.Shape component1();
     method public androidx.ui.engine.geometry.Shape component2();
     method public androidx.ui.material.Shapes copy(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
@@ -299,9 +224,7 @@
 
   public final class SwitchKt {
     ctor public SwitchKt();
-    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondaryVariant
-}));
+    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondaryVariant);
   }
 
   public final class TabKt {
@@ -334,6 +257,42 @@
     method public static androidx.ui.text.TextStyle withOpacity(androidx.ui.text.TextStyle, @FloatRange(from=0.0, to=1.0) float opacity);
   }
 
+  public final class Typography {
+    ctor public Typography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    ctor public Typography();
+    method public androidx.ui.text.TextStyle component1();
+    method public androidx.ui.text.TextStyle component10();
+    method public androidx.ui.text.TextStyle component11();
+    method public androidx.ui.text.TextStyle component12();
+    method public androidx.ui.text.TextStyle component13();
+    method public androidx.ui.text.TextStyle component2();
+    method public androidx.ui.text.TextStyle component3();
+    method public androidx.ui.text.TextStyle component4();
+    method public androidx.ui.text.TextStyle component5();
+    method public androidx.ui.text.TextStyle component6();
+    method public androidx.ui.text.TextStyle component7();
+    method public androidx.ui.text.TextStyle component8();
+    method public androidx.ui.text.TextStyle component9();
+    method public androidx.ui.material.Typography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    method public androidx.ui.text.TextStyle getBody1();
+    method public androidx.ui.text.TextStyle getBody2();
+    method public androidx.ui.text.TextStyle getButton();
+    method public androidx.ui.text.TextStyle getCaption();
+    method public androidx.ui.text.TextStyle getH1();
+    method public androidx.ui.text.TextStyle getH2();
+    method public androidx.ui.text.TextStyle getH3();
+    method public androidx.ui.text.TextStyle getH4();
+    method public androidx.ui.text.TextStyle getH5();
+    method public androidx.ui.text.TextStyle getH6();
+    method public androidx.ui.text.TextStyle getOverline();
+    method public androidx.ui.text.TextStyle getSubtitle1();
+    method public androidx.ui.text.TextStyle getSubtitle2();
+  }
+
+  public final class TypographyKt {
+    ctor public TypographyKt();
+  }
+
 }
 
 package androidx.ui.material.internal {
@@ -392,18 +351,12 @@
 
   public final class CardKt {
     ctor public CardKt();
-    method public static void Card(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    card
-}), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Card(androidx.ui.engine.geometry.Shape shape = card, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class SurfaceKt {
     ctor public SurfaceKt();
-    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static androidx.compose.Ambient<androidx.ui.graphics.Color> getCurrentBackground();
   }
 
diff --git a/ui/ui-material/api/public_plus_experimental_current.txt b/ui/ui-material/api/public_plus_experimental_current.txt
index 3a98b93..8eb5acc 100644
--- a/ui/ui-material/api/public_plus_experimental_current.txt
+++ b/ui/ui-material/api/public_plus_experimental_current.txt
@@ -15,15 +15,9 @@
   public final class AppBarKt {
     ctor public AppBarKt();
     method public static void AppBarIcon(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick);
-    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
-    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
-    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
+    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
+    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
+    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
   }
 
   public final class BottomAppBar {
@@ -44,25 +38,9 @@
     ctor public ButtonKt();
     method public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static void Button(String text, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle());
-    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
-    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border(+themeColor({ 
-    onSurface.copy(OutlinedStrokeOpacity)
-}), 1.dp), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
-    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
+    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
+    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border((+MaterialTheme.colors()).onSurface.copy(OutlinedStrokeOpacity), 1.dp), androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
+    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = button, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
   }
 
   public final class ButtonStyle {
@@ -86,12 +64,40 @@
 
   public final class CheckboxKt {
     ctor public CheckboxKt();
-    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
-    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+  }
+
+  public final class ColorKt {
+    ctor public ColorKt();
+    method public static androidx.ui.material.ColorPalette ColorPalette(androidx.ui.graphics.Color primary = Color(4284612846), androidx.ui.graphics.Color primaryVariant = Color(4281794739), androidx.ui.graphics.Color secondary = Color(4278442694), androidx.ui.graphics.Color secondaryVariant = Color(4278290310), androidx.ui.graphics.Color background = Color.White, androidx.ui.graphics.Color surface = Color.White, androidx.ui.graphics.Color error = Color(4289724448), androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color >
+  }
+
+  public interface ColorPalette {
+    method public androidx.ui.graphics.Color getBackground();
+    method public androidx.ui.graphics.Color getError();
+    method public androidx.ui.graphics.Color getOnBackground();
+    method public androidx.ui.graphics.Color getOnError();
+    method public androidx.ui.graphics.Color getOnPrimary();
+    method public androidx.ui.graphics.Color getOnSecondary();
+    method public androidx.ui.graphics.Color getOnSurface();
+    method public androidx.ui.graphics.Color getPrimary();
+    method public androidx.ui.graphics.Color getPrimaryVariant();
+    method public androidx.ui.graphics.Color getSecondary();
+    method public androidx.ui.graphics.Color getSecondaryVariant();
+    method public androidx.ui.graphics.Color getSurface();
+    property public abstract androidx.ui.graphics.Color background;
+    property public abstract androidx.ui.graphics.Color error;
+    property public abstract androidx.ui.graphics.Color onBackground;
+    property public abstract androidx.ui.graphics.Color onError;
+    property public abstract androidx.ui.graphics.Color onPrimary;
+    property public abstract androidx.ui.graphics.Color onSecondary;
+    property public abstract androidx.ui.graphics.Color onSurface;
+    property public abstract androidx.ui.graphics.Color primary;
+    property public abstract androidx.ui.graphics.Color primaryVariant;
+    property public abstract androidx.ui.graphics.Color secondary;
+    property public abstract androidx.ui.graphics.Color secondaryVariant;
+    property public abstract androidx.ui.graphics.Color surface;
   }
 
   public final class DataTableChildren {
@@ -103,9 +109,7 @@
 
   public final class DataTableKt {
     ctor public DataTableKt();
-    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = +themeColor({ 
-    primary.copy(0.08)
-}), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
+    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = (+MaterialTheme.colors()).primary.copy(0.08), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
     method public static androidx.ui.material.DataTablePagination DefaultDataTablePagination(int initialPage = 0, int initialRowsPerPage, java.util.List<java.lang.Integer> availableRowsPerPage);
     method public static androidx.ui.material.DataTableSorting DefaultDataTableSorting(Integer? initialColumn = null, boolean initialAscending = true, java.util.Set<java.lang.Integer> sortableColumns, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> onSortRequest);
   }
@@ -140,9 +144,7 @@
 
   public final class DividerKt {
     ctor public DividerKt();
-    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = +themeColor({ 
-    onSurface
-}), androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
+    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
   }
 
   public final class DrawerKt {
@@ -159,15 +161,9 @@
 
   public final class FloatingActionButtonKt {
     ctor public FloatingActionButtonKt();
-    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
-    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
     method public static androidx.ui.core.Dp getExtendedFabHeight();
     method public static androidx.ui.core.Dp getExtendedFabIconPadding();
     method public static androidx.ui.core.Dp getExtendedFabTextPadding();
@@ -180,116 +176,45 @@
     method public static void ListItem(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit>? icon = null, kotlin.jvm.functions.Function0<kotlin.Unit>? secondaryText = null, boolean singleLineSecondaryText = true, kotlin.jvm.functions.Function0<kotlin.Unit>? overlineText = null, kotlin.jvm.functions.Function0<kotlin.Unit>? trailing = null, kotlin.jvm.functions.Function0<kotlin.Unit>? >
   }
 
-  public final class MaterialColors {
-    ctor public MaterialColors(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    ctor public MaterialColors();
-    method public androidx.ui.graphics.Color component1();
-    method public androidx.ui.graphics.Color component10();
-    method public androidx.ui.graphics.Color component11();
-    method public androidx.ui.graphics.Color component12();
-    method public androidx.ui.graphics.Color component2();
-    method public androidx.ui.graphics.Color component3();
-    method public androidx.ui.graphics.Color component4();
-    method public androidx.ui.graphics.Color component5();
-    method public androidx.ui.graphics.Color component6();
-    method public androidx.ui.graphics.Color component7();
-    method public androidx.ui.graphics.Color component8();
-    method public androidx.ui.graphics.Color component9();
-    method public androidx.ui.material.MaterialColors copy(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    method public androidx.ui.graphics.Color getBackground();
-    method public androidx.ui.graphics.Color getError();
-    method public androidx.ui.graphics.Color getOnBackground();
-    method public androidx.ui.graphics.Color getOnError();
-    method public androidx.ui.graphics.Color getOnPrimary();
-    method public androidx.ui.graphics.Color getOnSecondary();
-    method public androidx.ui.graphics.Color getOnSurface();
-    method public androidx.ui.graphics.Color getPrimary();
-    method public androidx.ui.graphics.Color getPrimaryVariant();
-    method public androidx.ui.graphics.Color getSecondary();
-    method public androidx.ui.graphics.Color getSecondaryVariant();
-    method public androidx.ui.graphics.Color getSurface();
+  public final class MaterialTheme {
+    method public androidx.compose.Effect<androidx.ui.material.ColorPalette> colors();
+    method public androidx.compose.Effect<androidx.ui.material.Shapes> shapes();
+    method public androidx.compose.Effect<androidx.ui.material.Typography> typography();
+    field public static final androidx.ui.material.MaterialTheme! INSTANCE;
   }
 
   public final class MaterialThemeKt {
     ctor public MaterialThemeKt();
-    method public static void MaterialShapeTheme(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void MaterialTheme(androidx.ui.material.MaterialColors colors = androidx.ui.material.MaterialColors(), androidx.ui.material.MaterialTypography typography = androidx.ui.material.MaterialTypography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialColors> getColors();
-    method public static androidx.compose.Ambient<androidx.ui.material.Shapes> getCurrentShapeAmbient();
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialTypography> getTypography();
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.graphics.Color> themeColor(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialColors,androidx.ui.graphics.Color> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.engine.geometry.Shape> themeShape(kotlin.jvm.functions.Function1<? super androidx.ui.material.Shapes,? extends androidx.ui.engine.geometry.Shape> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.text.TextStyle> themeTextStyle(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialTypography,androidx.ui.text.TextStyle> choosingBlock);
-  }
-
-  public final class MaterialTypography {
-    ctor public MaterialTypography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    ctor public MaterialTypography();
-    method public androidx.ui.text.TextStyle component1();
-    method public androidx.ui.text.TextStyle component10();
-    method public androidx.ui.text.TextStyle component11();
-    method public androidx.ui.text.TextStyle component12();
-    method public androidx.ui.text.TextStyle component13();
-    method public androidx.ui.text.TextStyle component2();
-    method public androidx.ui.text.TextStyle component3();
-    method public androidx.ui.text.TextStyle component4();
-    method public androidx.ui.text.TextStyle component5();
-    method public androidx.ui.text.TextStyle component6();
-    method public androidx.ui.text.TextStyle component7();
-    method public androidx.ui.text.TextStyle component8();
-    method public androidx.ui.text.TextStyle component9();
-    method public androidx.ui.material.MaterialTypography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    method public androidx.ui.text.TextStyle getBody1();
-    method public androidx.ui.text.TextStyle getBody2();
-    method public androidx.ui.text.TextStyle getButton();
-    method public androidx.ui.text.TextStyle getCaption();
-    method public androidx.ui.text.TextStyle getH1();
-    method public androidx.ui.text.TextStyle getH2();
-    method public androidx.ui.text.TextStyle getH3();
-    method public androidx.ui.text.TextStyle getH4();
-    method public androidx.ui.text.TextStyle getH5();
-    method public androidx.ui.text.TextStyle getH6();
-    method public androidx.ui.text.TextStyle getOverline();
-    method public androidx.ui.text.TextStyle getSubtitle1();
-    method public androidx.ui.text.TextStyle getSubtitle2();
+    method public static void MaterialTheme(androidx.ui.material.ColorPalette colors = ColorPalette(), androidx.ui.material.Typography typography = androidx.ui.material.Typography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class ProgressIndicatorKt {
     ctor public ProgressIndicatorKt();
-    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
+    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
   }
 
   public final class RadioButtonKt {
     ctor public RadioButtonKt();
-    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
     method public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> children);
-    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
   }
 
   public final class RadioGroupScope {
     method public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
+  }
+
+  public final class ShapeKt {
+    ctor public ShapeKt();
   }
 
   public final class Shapes {
     ctor public Shapes(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
+    ctor public Shapes();
     method public androidx.ui.engine.geometry.Shape component1();
     method public androidx.ui.engine.geometry.Shape component2();
     method public androidx.ui.material.Shapes copy(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
@@ -299,9 +224,7 @@
 
   public final class SwitchKt {
     ctor public SwitchKt();
-    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondaryVariant
-}));
+    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondaryVariant);
   }
 
   public final class TabKt {
@@ -334,6 +257,42 @@
     method public static androidx.ui.text.TextStyle withOpacity(androidx.ui.text.TextStyle, @FloatRange(from=0.0, to=1.0) float opacity);
   }
 
+  public final class Typography {
+    ctor public Typography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    ctor public Typography();
+    method public androidx.ui.text.TextStyle component1();
+    method public androidx.ui.text.TextStyle component10();
+    method public androidx.ui.text.TextStyle component11();
+    method public androidx.ui.text.TextStyle component12();
+    method public androidx.ui.text.TextStyle component13();
+    method public androidx.ui.text.TextStyle component2();
+    method public androidx.ui.text.TextStyle component3();
+    method public androidx.ui.text.TextStyle component4();
+    method public androidx.ui.text.TextStyle component5();
+    method public androidx.ui.text.TextStyle component6();
+    method public androidx.ui.text.TextStyle component7();
+    method public androidx.ui.text.TextStyle component8();
+    method public androidx.ui.text.TextStyle component9();
+    method public androidx.ui.material.Typography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    method public androidx.ui.text.TextStyle getBody1();
+    method public androidx.ui.text.TextStyle getBody2();
+    method public androidx.ui.text.TextStyle getButton();
+    method public androidx.ui.text.TextStyle getCaption();
+    method public androidx.ui.text.TextStyle getH1();
+    method public androidx.ui.text.TextStyle getH2();
+    method public androidx.ui.text.TextStyle getH3();
+    method public androidx.ui.text.TextStyle getH4();
+    method public androidx.ui.text.TextStyle getH5();
+    method public androidx.ui.text.TextStyle getH6();
+    method public androidx.ui.text.TextStyle getOverline();
+    method public androidx.ui.text.TextStyle getSubtitle1();
+    method public androidx.ui.text.TextStyle getSubtitle2();
+  }
+
+  public final class TypographyKt {
+    ctor public TypographyKt();
+  }
+
 }
 
 package androidx.ui.material.internal {
@@ -392,18 +351,12 @@
 
   public final class CardKt {
     ctor public CardKt();
-    method public static void Card(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    card
-}), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Card(androidx.ui.engine.geometry.Shape shape = card, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class SurfaceKt {
     ctor public SurfaceKt();
-    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static androidx.compose.Ambient<androidx.ui.graphics.Color> getCurrentBackground();
   }
 
diff --git a/ui/ui-material/api/restricted_0.1.0-dev03.txt b/ui/ui-material/api/restricted_0.1.0-dev03.txt
index 3a98b93..8eb5acc 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev03.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev03.txt
@@ -15,15 +15,9 @@
   public final class AppBarKt {
     ctor public AppBarKt();
     method public static void AppBarIcon(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick);
-    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
-    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
-    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
+    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
+    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
+    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
   }
 
   public final class BottomAppBar {
@@ -44,25 +38,9 @@
     ctor public ButtonKt();
     method public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static void Button(String text, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle());
-    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
-    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border(+themeColor({ 
-    onSurface.copy(OutlinedStrokeOpacity)
-}), 1.dp), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
-    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
+    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
+    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border((+MaterialTheme.colors()).onSurface.copy(OutlinedStrokeOpacity), 1.dp), androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
+    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = button, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
   }
 
   public final class ButtonStyle {
@@ -86,12 +64,40 @@
 
   public final class CheckboxKt {
     ctor public CheckboxKt();
-    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
-    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+  }
+
+  public final class ColorKt {
+    ctor public ColorKt();
+    method public static androidx.ui.material.ColorPalette ColorPalette(androidx.ui.graphics.Color primary = Color(4284612846), androidx.ui.graphics.Color primaryVariant = Color(4281794739), androidx.ui.graphics.Color secondary = Color(4278442694), androidx.ui.graphics.Color secondaryVariant = Color(4278290310), androidx.ui.graphics.Color background = Color.White, androidx.ui.graphics.Color surface = Color.White, androidx.ui.graphics.Color error = Color(4289724448), androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color >
+  }
+
+  public interface ColorPalette {
+    method public androidx.ui.graphics.Color getBackground();
+    method public androidx.ui.graphics.Color getError();
+    method public androidx.ui.graphics.Color getOnBackground();
+    method public androidx.ui.graphics.Color getOnError();
+    method public androidx.ui.graphics.Color getOnPrimary();
+    method public androidx.ui.graphics.Color getOnSecondary();
+    method public androidx.ui.graphics.Color getOnSurface();
+    method public androidx.ui.graphics.Color getPrimary();
+    method public androidx.ui.graphics.Color getPrimaryVariant();
+    method public androidx.ui.graphics.Color getSecondary();
+    method public androidx.ui.graphics.Color getSecondaryVariant();
+    method public androidx.ui.graphics.Color getSurface();
+    property public abstract androidx.ui.graphics.Color background;
+    property public abstract androidx.ui.graphics.Color error;
+    property public abstract androidx.ui.graphics.Color onBackground;
+    property public abstract androidx.ui.graphics.Color onError;
+    property public abstract androidx.ui.graphics.Color onPrimary;
+    property public abstract androidx.ui.graphics.Color onSecondary;
+    property public abstract androidx.ui.graphics.Color onSurface;
+    property public abstract androidx.ui.graphics.Color primary;
+    property public abstract androidx.ui.graphics.Color primaryVariant;
+    property public abstract androidx.ui.graphics.Color secondary;
+    property public abstract androidx.ui.graphics.Color secondaryVariant;
+    property public abstract androidx.ui.graphics.Color surface;
   }
 
   public final class DataTableChildren {
@@ -103,9 +109,7 @@
 
   public final class DataTableKt {
     ctor public DataTableKt();
-    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = +themeColor({ 
-    primary.copy(0.08)
-}), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
+    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = (+MaterialTheme.colors()).primary.copy(0.08), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
     method public static androidx.ui.material.DataTablePagination DefaultDataTablePagination(int initialPage = 0, int initialRowsPerPage, java.util.List<java.lang.Integer> availableRowsPerPage);
     method public static androidx.ui.material.DataTableSorting DefaultDataTableSorting(Integer? initialColumn = null, boolean initialAscending = true, java.util.Set<java.lang.Integer> sortableColumns, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> onSortRequest);
   }
@@ -140,9 +144,7 @@
 
   public final class DividerKt {
     ctor public DividerKt();
-    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = +themeColor({ 
-    onSurface
-}), androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
+    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
   }
 
   public final class DrawerKt {
@@ -159,15 +161,9 @@
 
   public final class FloatingActionButtonKt {
     ctor public FloatingActionButtonKt();
-    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
-    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
     method public static androidx.ui.core.Dp getExtendedFabHeight();
     method public static androidx.ui.core.Dp getExtendedFabIconPadding();
     method public static androidx.ui.core.Dp getExtendedFabTextPadding();
@@ -180,116 +176,45 @@
     method public static void ListItem(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit>? icon = null, kotlin.jvm.functions.Function0<kotlin.Unit>? secondaryText = null, boolean singleLineSecondaryText = true, kotlin.jvm.functions.Function0<kotlin.Unit>? overlineText = null, kotlin.jvm.functions.Function0<kotlin.Unit>? trailing = null, kotlin.jvm.functions.Function0<kotlin.Unit>? >
   }
 
-  public final class MaterialColors {
-    ctor public MaterialColors(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    ctor public MaterialColors();
-    method public androidx.ui.graphics.Color component1();
-    method public androidx.ui.graphics.Color component10();
-    method public androidx.ui.graphics.Color component11();
-    method public androidx.ui.graphics.Color component12();
-    method public androidx.ui.graphics.Color component2();
-    method public androidx.ui.graphics.Color component3();
-    method public androidx.ui.graphics.Color component4();
-    method public androidx.ui.graphics.Color component5();
-    method public androidx.ui.graphics.Color component6();
-    method public androidx.ui.graphics.Color component7();
-    method public androidx.ui.graphics.Color component8();
-    method public androidx.ui.graphics.Color component9();
-    method public androidx.ui.material.MaterialColors copy(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    method public androidx.ui.graphics.Color getBackground();
-    method public androidx.ui.graphics.Color getError();
-    method public androidx.ui.graphics.Color getOnBackground();
-    method public androidx.ui.graphics.Color getOnError();
-    method public androidx.ui.graphics.Color getOnPrimary();
-    method public androidx.ui.graphics.Color getOnSecondary();
-    method public androidx.ui.graphics.Color getOnSurface();
-    method public androidx.ui.graphics.Color getPrimary();
-    method public androidx.ui.graphics.Color getPrimaryVariant();
-    method public androidx.ui.graphics.Color getSecondary();
-    method public androidx.ui.graphics.Color getSecondaryVariant();
-    method public androidx.ui.graphics.Color getSurface();
+  public final class MaterialTheme {
+    method public androidx.compose.Effect<androidx.ui.material.ColorPalette> colors();
+    method public androidx.compose.Effect<androidx.ui.material.Shapes> shapes();
+    method public androidx.compose.Effect<androidx.ui.material.Typography> typography();
+    field public static final androidx.ui.material.MaterialTheme! INSTANCE;
   }
 
   public final class MaterialThemeKt {
     ctor public MaterialThemeKt();
-    method public static void MaterialShapeTheme(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void MaterialTheme(androidx.ui.material.MaterialColors colors = androidx.ui.material.MaterialColors(), androidx.ui.material.MaterialTypography typography = androidx.ui.material.MaterialTypography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialColors> getColors();
-    method public static androidx.compose.Ambient<androidx.ui.material.Shapes> getCurrentShapeAmbient();
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialTypography> getTypography();
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.graphics.Color> themeColor(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialColors,androidx.ui.graphics.Color> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.engine.geometry.Shape> themeShape(kotlin.jvm.functions.Function1<? super androidx.ui.material.Shapes,? extends androidx.ui.engine.geometry.Shape> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.text.TextStyle> themeTextStyle(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialTypography,androidx.ui.text.TextStyle> choosingBlock);
-  }
-
-  public final class MaterialTypography {
-    ctor public MaterialTypography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    ctor public MaterialTypography();
-    method public androidx.ui.text.TextStyle component1();
-    method public androidx.ui.text.TextStyle component10();
-    method public androidx.ui.text.TextStyle component11();
-    method public androidx.ui.text.TextStyle component12();
-    method public androidx.ui.text.TextStyle component13();
-    method public androidx.ui.text.TextStyle component2();
-    method public androidx.ui.text.TextStyle component3();
-    method public androidx.ui.text.TextStyle component4();
-    method public androidx.ui.text.TextStyle component5();
-    method public androidx.ui.text.TextStyle component6();
-    method public androidx.ui.text.TextStyle component7();
-    method public androidx.ui.text.TextStyle component8();
-    method public androidx.ui.text.TextStyle component9();
-    method public androidx.ui.material.MaterialTypography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    method public androidx.ui.text.TextStyle getBody1();
-    method public androidx.ui.text.TextStyle getBody2();
-    method public androidx.ui.text.TextStyle getButton();
-    method public androidx.ui.text.TextStyle getCaption();
-    method public androidx.ui.text.TextStyle getH1();
-    method public androidx.ui.text.TextStyle getH2();
-    method public androidx.ui.text.TextStyle getH3();
-    method public androidx.ui.text.TextStyle getH4();
-    method public androidx.ui.text.TextStyle getH5();
-    method public androidx.ui.text.TextStyle getH6();
-    method public androidx.ui.text.TextStyle getOverline();
-    method public androidx.ui.text.TextStyle getSubtitle1();
-    method public androidx.ui.text.TextStyle getSubtitle2();
+    method public static void MaterialTheme(androidx.ui.material.ColorPalette colors = ColorPalette(), androidx.ui.material.Typography typography = androidx.ui.material.Typography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class ProgressIndicatorKt {
     ctor public ProgressIndicatorKt();
-    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
+    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
   }
 
   public final class RadioButtonKt {
     ctor public RadioButtonKt();
-    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
     method public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> children);
-    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
   }
 
   public final class RadioGroupScope {
     method public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
+  }
+
+  public final class ShapeKt {
+    ctor public ShapeKt();
   }
 
   public final class Shapes {
     ctor public Shapes(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
+    ctor public Shapes();
     method public androidx.ui.engine.geometry.Shape component1();
     method public androidx.ui.engine.geometry.Shape component2();
     method public androidx.ui.material.Shapes copy(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
@@ -299,9 +224,7 @@
 
   public final class SwitchKt {
     ctor public SwitchKt();
-    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondaryVariant
-}));
+    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondaryVariant);
   }
 
   public final class TabKt {
@@ -334,6 +257,42 @@
     method public static androidx.ui.text.TextStyle withOpacity(androidx.ui.text.TextStyle, @FloatRange(from=0.0, to=1.0) float opacity);
   }
 
+  public final class Typography {
+    ctor public Typography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    ctor public Typography();
+    method public androidx.ui.text.TextStyle component1();
+    method public androidx.ui.text.TextStyle component10();
+    method public androidx.ui.text.TextStyle component11();
+    method public androidx.ui.text.TextStyle component12();
+    method public androidx.ui.text.TextStyle component13();
+    method public androidx.ui.text.TextStyle component2();
+    method public androidx.ui.text.TextStyle component3();
+    method public androidx.ui.text.TextStyle component4();
+    method public androidx.ui.text.TextStyle component5();
+    method public androidx.ui.text.TextStyle component6();
+    method public androidx.ui.text.TextStyle component7();
+    method public androidx.ui.text.TextStyle component8();
+    method public androidx.ui.text.TextStyle component9();
+    method public androidx.ui.material.Typography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    method public androidx.ui.text.TextStyle getBody1();
+    method public androidx.ui.text.TextStyle getBody2();
+    method public androidx.ui.text.TextStyle getButton();
+    method public androidx.ui.text.TextStyle getCaption();
+    method public androidx.ui.text.TextStyle getH1();
+    method public androidx.ui.text.TextStyle getH2();
+    method public androidx.ui.text.TextStyle getH3();
+    method public androidx.ui.text.TextStyle getH4();
+    method public androidx.ui.text.TextStyle getH5();
+    method public androidx.ui.text.TextStyle getH6();
+    method public androidx.ui.text.TextStyle getOverline();
+    method public androidx.ui.text.TextStyle getSubtitle1();
+    method public androidx.ui.text.TextStyle getSubtitle2();
+  }
+
+  public final class TypographyKt {
+    ctor public TypographyKt();
+  }
+
 }
 
 package androidx.ui.material.internal {
@@ -392,18 +351,12 @@
 
   public final class CardKt {
     ctor public CardKt();
-    method public static void Card(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    card
-}), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Card(androidx.ui.engine.geometry.Shape shape = card, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class SurfaceKt {
     ctor public SurfaceKt();
-    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static androidx.compose.Ambient<androidx.ui.graphics.Color> getCurrentBackground();
   }
 
diff --git a/ui/ui-material/api/restricted_current.txt b/ui/ui-material/api/restricted_current.txt
index 3a98b93..8eb5acc 100644
--- a/ui/ui-material/api/restricted_current.txt
+++ b/ui/ui-material/api/restricted_current.txt
@@ -15,15 +15,9 @@
   public final class AppBarKt {
     ctor public AppBarKt();
     method public static void AppBarIcon(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit> onClick);
-    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
-    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
-    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
+    method public static <T> void BottomAppBar(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, androidx.ui.material.BottomAppBar.FabConfiguration? fabConfiguration = null, java.util.List<? extends T> actionData = emptyList(), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action = {});
+    method public static void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null);
+    method public static <T> void TopAppBar(kotlin.jvm.functions.Function0<kotlin.Unit> title, java.util.List<? extends T> actionData, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super T,kotlin.Unit> action);
   }
 
   public final class BottomAppBar {
@@ -44,25 +38,9 @@
     ctor public ButtonKt();
     method public static void Button(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static void Button(String text, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.material.ButtonStyle style = ContainedButtonStyle());
-    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
-    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border(+themeColor({ 
-    onSurface.copy(OutlinedStrokeOpacity)
-}), 1.dp), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
-    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    button
-}), androidx.ui.graphics.Color? contentColor = +themeColor({ 
-    primary
-}));
+    method public static androidx.ui.material.ButtonStyle ContainedButtonStyle(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 2.dp, androidx.ui.graphics.Color? rippleColor = null);
+    method public static androidx.ui.material.ButtonStyle OutlinedButtonStyle(androidx.ui.foundation.shape.border.Border border = Border((+MaterialTheme.colors()).onSurface.copy(OutlinedStrokeOpacity), 1.dp), androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.engine.geometry.Shape shape = button, androidx.ui.core.Dp elevation = 0.dp, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
+    method public static androidx.ui.material.ButtonStyle TextButtonStyle(androidx.ui.engine.geometry.Shape shape = button, androidx.ui.graphics.Color? contentColor = (+MaterialTheme.colors()).primary);
   }
 
   public final class ButtonStyle {
@@ -86,12 +64,40 @@
 
   public final class CheckboxKt {
     ctor public CheckboxKt();
-    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
-    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void Checkbox(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+    method public static void TriStateCheckbox(androidx.ui.foundation.selection.ToggleableState value, kotlin.jvm.functions.Function0<kotlin.Unit>? onClick, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
+  }
+
+  public final class ColorKt {
+    ctor public ColorKt();
+    method public static androidx.ui.material.ColorPalette ColorPalette(androidx.ui.graphics.Color primary = Color(4284612846), androidx.ui.graphics.Color primaryVariant = Color(4281794739), androidx.ui.graphics.Color secondary = Color(4278442694), androidx.ui.graphics.Color secondaryVariant = Color(4278290310), androidx.ui.graphics.Color background = Color.White, androidx.ui.graphics.Color surface = Color.White, androidx.ui.graphics.Color error = Color(4289724448), androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color  androidx.ui.graphics.Color >
+  }
+
+  public interface ColorPalette {
+    method public androidx.ui.graphics.Color getBackground();
+    method public androidx.ui.graphics.Color getError();
+    method public androidx.ui.graphics.Color getOnBackground();
+    method public androidx.ui.graphics.Color getOnError();
+    method public androidx.ui.graphics.Color getOnPrimary();
+    method public androidx.ui.graphics.Color getOnSecondary();
+    method public androidx.ui.graphics.Color getOnSurface();
+    method public androidx.ui.graphics.Color getPrimary();
+    method public androidx.ui.graphics.Color getPrimaryVariant();
+    method public androidx.ui.graphics.Color getSecondary();
+    method public androidx.ui.graphics.Color getSecondaryVariant();
+    method public androidx.ui.graphics.Color getSurface();
+    property public abstract androidx.ui.graphics.Color background;
+    property public abstract androidx.ui.graphics.Color error;
+    property public abstract androidx.ui.graphics.Color onBackground;
+    property public abstract androidx.ui.graphics.Color onError;
+    property public abstract androidx.ui.graphics.Color onPrimary;
+    property public abstract androidx.ui.graphics.Color onSecondary;
+    property public abstract androidx.ui.graphics.Color onSurface;
+    property public abstract androidx.ui.graphics.Color primary;
+    property public abstract androidx.ui.graphics.Color primaryVariant;
+    property public abstract androidx.ui.graphics.Color secondary;
+    property public abstract androidx.ui.graphics.Color secondaryVariant;
+    property public abstract androidx.ui.graphics.Color surface;
   }
 
   public final class DataTableChildren {
@@ -103,9 +109,7 @@
 
   public final class DataTableKt {
     ctor public DataTableKt();
-    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = +themeColor({ 
-    primary.copy(0.08)
-}), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
+    method public static void DataTable(int columns, kotlin.jvm.functions.Function1<? super java.lang.Integer,java.lang.Boolean> numeric = { false }, androidx.ui.core.Dp dataRowHeight = androidx.ui.material.DataTableKt.DataRowHeight, androidx.ui.core.Dp headerRowHeight = androidx.ui.material.DataTableKt.HeaderRowHeight, androidx.ui.layout.EdgeInsets cellSpacing = androidx.ui.material.DataTableKt.CellSpacing, androidx.ui.foundation.shape.border.Border border = Border(BorderColor, BorderWidth), androidx.ui.graphics.Color selectedColor = (+MaterialTheme.colors()).primary.copy(0.08), androidx.ui.material.DataTablePagination? pagination = null, androidx.ui.material.DataTableSorting? sorting = null, kotlin.jvm.functions.Function1<? super androidx.ui.material.DataTableChildren,kotlin.Unit> block);
     method public static androidx.ui.material.DataTablePagination DefaultDataTablePagination(int initialPage = 0, int initialRowsPerPage, java.util.List<java.lang.Integer> availableRowsPerPage);
     method public static androidx.ui.material.DataTableSorting DefaultDataTableSorting(Integer? initialColumn = null, boolean initialAscending = true, java.util.Set<java.lang.Integer> sortableColumns, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> onSortRequest);
   }
@@ -140,9 +144,7 @@
 
   public final class DividerKt {
     ctor public DividerKt();
-    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = +themeColor({ 
-    onSurface
-}), androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
+    method public static void Divider(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.core.Dp height = 1.dp, androidx.ui.core.Dp indent = 0.dp);
   }
 
   public final class DrawerKt {
@@ -159,15 +161,9 @@
 
   public final class FloatingActionButtonKt {
     ctor public FloatingActionButtonKt();
-    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
-    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}), androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.core.Dp minSize = FabSize, androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void FloatingActionButton(androidx.ui.graphics.Image icon, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.engine.geometry.Shape shape = CircleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
+    method public static void FloatingActionButton(String text, androidx.ui.graphics.Image? icon = null, androidx.ui.text.TextStyle? textStyle = null, kotlin.jvm.functions.Function0<kotlin.Unit>?  androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary, androidx.ui.core.Dp elevation = 6.dp);
     method public static androidx.ui.core.Dp getExtendedFabHeight();
     method public static androidx.ui.core.Dp getExtendedFabIconPadding();
     method public static androidx.ui.core.Dp getExtendedFabTextPadding();
@@ -180,116 +176,45 @@
     method public static void ListItem(kotlin.jvm.functions.Function0<kotlin.Unit> text, kotlin.jvm.functions.Function0<kotlin.Unit>? icon = null, kotlin.jvm.functions.Function0<kotlin.Unit>? secondaryText = null, boolean singleLineSecondaryText = true, kotlin.jvm.functions.Function0<kotlin.Unit>? overlineText = null, kotlin.jvm.functions.Function0<kotlin.Unit>? trailing = null, kotlin.jvm.functions.Function0<kotlin.Unit>? >
   }
 
-  public final class MaterialColors {
-    ctor public MaterialColors(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    ctor public MaterialColors();
-    method public androidx.ui.graphics.Color component1();
-    method public androidx.ui.graphics.Color component10();
-    method public androidx.ui.graphics.Color component11();
-    method public androidx.ui.graphics.Color component12();
-    method public androidx.ui.graphics.Color component2();
-    method public androidx.ui.graphics.Color component3();
-    method public androidx.ui.graphics.Color component4();
-    method public androidx.ui.graphics.Color component5();
-    method public androidx.ui.graphics.Color component6();
-    method public androidx.ui.graphics.Color component7();
-    method public androidx.ui.graphics.Color component8();
-    method public androidx.ui.graphics.Color component9();
-    method public androidx.ui.material.MaterialColors copy(androidx.ui.graphics.Color primary, androidx.ui.graphics.Color primaryVariant, androidx.ui.graphics.Color secondary, androidx.ui.graphics.Color secondaryVariant, androidx.ui.graphics.Color background, androidx.ui.graphics.Color surface, androidx.ui.graphics.Color error, androidx.ui.graphics.Color onPrimary, androidx.ui.graphics.Color onSecondary, androidx.ui.graphics.Color onBackground, androidx.ui.graphics.Color onSurface, androidx.ui.graphics.Color onError);
-    method public androidx.ui.graphics.Color getBackground();
-    method public androidx.ui.graphics.Color getError();
-    method public androidx.ui.graphics.Color getOnBackground();
-    method public androidx.ui.graphics.Color getOnError();
-    method public androidx.ui.graphics.Color getOnPrimary();
-    method public androidx.ui.graphics.Color getOnSecondary();
-    method public androidx.ui.graphics.Color getOnSurface();
-    method public androidx.ui.graphics.Color getPrimary();
-    method public androidx.ui.graphics.Color getPrimaryVariant();
-    method public androidx.ui.graphics.Color getSecondary();
-    method public androidx.ui.graphics.Color getSecondaryVariant();
-    method public androidx.ui.graphics.Color getSurface();
+  public final class MaterialTheme {
+    method public androidx.compose.Effect<androidx.ui.material.ColorPalette> colors();
+    method public androidx.compose.Effect<androidx.ui.material.Shapes> shapes();
+    method public androidx.compose.Effect<androidx.ui.material.Typography> typography();
+    field public static final androidx.ui.material.MaterialTheme! INSTANCE;
   }
 
   public final class MaterialThemeKt {
     ctor public MaterialThemeKt();
-    method public static void MaterialShapeTheme(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static void MaterialTheme(androidx.ui.material.MaterialColors colors = androidx.ui.material.MaterialColors(), androidx.ui.material.MaterialTypography typography = androidx.ui.material.MaterialTypography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialColors> getColors();
-    method public static androidx.compose.Ambient<androidx.ui.material.Shapes> getCurrentShapeAmbient();
-    method public static androidx.compose.Ambient<androidx.ui.material.MaterialTypography> getTypography();
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.graphics.Color> themeColor(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialColors,androidx.ui.graphics.Color> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.engine.geometry.Shape> themeShape(kotlin.jvm.functions.Function1<? super androidx.ui.material.Shapes,? extends androidx.ui.engine.geometry.Shape> choosingBlock);
-    method @CheckResult(suggest="+") public static androidx.compose.Effect<androidx.ui.text.TextStyle> themeTextStyle(kotlin.jvm.functions.Function1<? super androidx.ui.material.MaterialTypography,androidx.ui.text.TextStyle> choosingBlock);
-  }
-
-  public final class MaterialTypography {
-    ctor public MaterialTypography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    ctor public MaterialTypography();
-    method public androidx.ui.text.TextStyle component1();
-    method public androidx.ui.text.TextStyle component10();
-    method public androidx.ui.text.TextStyle component11();
-    method public androidx.ui.text.TextStyle component12();
-    method public androidx.ui.text.TextStyle component13();
-    method public androidx.ui.text.TextStyle component2();
-    method public androidx.ui.text.TextStyle component3();
-    method public androidx.ui.text.TextStyle component4();
-    method public androidx.ui.text.TextStyle component5();
-    method public androidx.ui.text.TextStyle component6();
-    method public androidx.ui.text.TextStyle component7();
-    method public androidx.ui.text.TextStyle component8();
-    method public androidx.ui.text.TextStyle component9();
-    method public androidx.ui.material.MaterialTypography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
-    method public androidx.ui.text.TextStyle getBody1();
-    method public androidx.ui.text.TextStyle getBody2();
-    method public androidx.ui.text.TextStyle getButton();
-    method public androidx.ui.text.TextStyle getCaption();
-    method public androidx.ui.text.TextStyle getH1();
-    method public androidx.ui.text.TextStyle getH2();
-    method public androidx.ui.text.TextStyle getH3();
-    method public androidx.ui.text.TextStyle getH4();
-    method public androidx.ui.text.TextStyle getH5();
-    method public androidx.ui.text.TextStyle getH6();
-    method public androidx.ui.text.TextStyle getOverline();
-    method public androidx.ui.text.TextStyle getSubtitle1();
-    method public androidx.ui.text.TextStyle getSubtitle2();
+    method public static void MaterialTheme(androidx.ui.material.ColorPalette colors = ColorPalette(), androidx.ui.material.Typography typography = androidx.ui.material.Typography(), kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class ProgressIndicatorKt {
     ctor public ProgressIndicatorKt();
-    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
-    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = +themeColor({ 
-    primary
-}));
+    method public static void CircularProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void CircularProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(@FloatRange(from=0.0, to=1.0) float progress, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
+    method public static void LinearProgressIndicator(androidx.ui.graphics.Color color = (+MaterialTheme.colors()).primary);
   }
 
   public final class RadioButtonKt {
     ctor public RadioButtonKt();
-    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = +themeColor({ 
-    secondary
-}));
+    method public static void RadioButton(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit>? onSelect, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondary);
     method public static void RadioGroup(kotlin.jvm.functions.Function1<? super androidx.ui.material.RadioGroupScope,kotlin.Unit> children);
-    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public static void RadioGroup(java.util.List<java.lang.String> options, String? selectedOption, kotlin.jvm.functions.Function1<? super java.lang.String,kotlin.Unit> onSelectedChange, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
   }
 
   public final class RadioGroupScope {
     method public void RadioGroupItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = +themeColor({ 
-    secondary
-}), androidx.ui.text.TextStyle? textStyle = null);
+    method public void RadioGroupTextItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelect, String text, androidx.ui.graphics.Color radioColor = (+MaterialTheme.colors()).secondary, androidx.ui.text.TextStyle? textStyle = null);
+  }
+
+  public final class ShapeKt {
+    ctor public ShapeKt();
   }
 
   public final class Shapes {
     ctor public Shapes(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
+    ctor public Shapes();
     method public androidx.ui.engine.geometry.Shape component1();
     method public androidx.ui.engine.geometry.Shape component2();
     method public androidx.ui.material.Shapes copy(androidx.ui.engine.geometry.Shape button, androidx.ui.engine.geometry.Shape card);
@@ -299,9 +224,7 @@
 
   public final class SwitchKt {
     ctor public SwitchKt();
-    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = +themeColor({ 
-    secondaryVariant
-}));
+    method public static void Switch(boolean checked, kotlin.jvm.functions.Function1<? super java.lang.Boolean,kotlin.Unit>? onCheckedChange, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).secondaryVariant);
   }
 
   public final class TabKt {
@@ -334,6 +257,42 @@
     method public static androidx.ui.text.TextStyle withOpacity(androidx.ui.text.TextStyle, @FloatRange(from=0.0, to=1.0) float opacity);
   }
 
+  public final class Typography {
+    ctor public Typography(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    ctor public Typography();
+    method public androidx.ui.text.TextStyle component1();
+    method public androidx.ui.text.TextStyle component10();
+    method public androidx.ui.text.TextStyle component11();
+    method public androidx.ui.text.TextStyle component12();
+    method public androidx.ui.text.TextStyle component13();
+    method public androidx.ui.text.TextStyle component2();
+    method public androidx.ui.text.TextStyle component3();
+    method public androidx.ui.text.TextStyle component4();
+    method public androidx.ui.text.TextStyle component5();
+    method public androidx.ui.text.TextStyle component6();
+    method public androidx.ui.text.TextStyle component7();
+    method public androidx.ui.text.TextStyle component8();
+    method public androidx.ui.text.TextStyle component9();
+    method public androidx.ui.material.Typography copy(androidx.ui.text.TextStyle h1, androidx.ui.text.TextStyle h2, androidx.ui.text.TextStyle h3, androidx.ui.text.TextStyle h4, androidx.ui.text.TextStyle h5, androidx.ui.text.TextStyle h6, androidx.ui.text.TextStyle subtitle1, androidx.ui.text.TextStyle subtitle2, androidx.ui.text.TextStyle body1, androidx.ui.text.TextStyle body2, androidx.ui.text.TextStyle button, androidx.ui.text.TextStyle caption, androidx.ui.text.TextStyle overline);
+    method public androidx.ui.text.TextStyle getBody1();
+    method public androidx.ui.text.TextStyle getBody2();
+    method public androidx.ui.text.TextStyle getButton();
+    method public androidx.ui.text.TextStyle getCaption();
+    method public androidx.ui.text.TextStyle getH1();
+    method public androidx.ui.text.TextStyle getH2();
+    method public androidx.ui.text.TextStyle getH3();
+    method public androidx.ui.text.TextStyle getH4();
+    method public androidx.ui.text.TextStyle getH5();
+    method public androidx.ui.text.TextStyle getH6();
+    method public androidx.ui.text.TextStyle getOverline();
+    method public androidx.ui.text.TextStyle getSubtitle1();
+    method public androidx.ui.text.TextStyle getSubtitle2();
+  }
+
+  public final class TypographyKt {
+    ctor public TypographyKt();
+  }
+
 }
 
 package androidx.ui.material.internal {
@@ -392,18 +351,12 @@
 
   public final class CardKt {
     ctor public CardKt();
-    method public static void Card(androidx.ui.engine.geometry.Shape shape = +themeShape({ 
-    card
-}), androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Card(androidx.ui.engine.geometry.Shape shape = card, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 1.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   public final class SurfaceKt {
     ctor public SurfaceKt();
-    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = +themeColor({ 
-    surface
-}), androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method public static void Surface(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.engine.geometry.Shape shape = RectangleShape, androidx.ui.graphics.Color color = (+MaterialTheme.colors()).surface, androidx.ui.foundation.shape.border.Border? border = null, androidx.ui.core.Dp elevation = 0.dp, kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method public static androidx.compose.Ambient<androidx.ui.graphics.Color> getCurrentBackground();
   }
 
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt
index 0ec77eb..414ba6f 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarActivity.kt
@@ -45,9 +45,9 @@
 import androidx.ui.material.samples.SimpleTopAppBarNavIcon
 import androidx.ui.material.samples.SimpleTopAppBarNavIconWithActions
 import androidx.ui.material.surface.Surface
-import androidx.ui.material.themeTextStyle
 import androidx.ui.graphics.imageFromResource
 import androidx.ui.layout.ExpandedHeight
+import androidx.ui.material.MaterialTheme
 
 class AppBarActivity : MaterialDemoActivity() {
 
@@ -149,6 +149,6 @@
 
     @Composable
     private fun DemoText(text: String) {
-        Text(text, style = +themeTextStyle { h6 })
+        Text(text, style = (+MaterialTheme.typography()).h6)
     }
 }
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DividersSpacersActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DividersSpacersActivity.kt
index 794567e..4ae3b55 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DividersSpacersActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DividersSpacersActivity.kt
@@ -30,7 +30,7 @@
 import androidx.ui.layout.Row
 import androidx.ui.layout.WidthSpacer
 import androidx.ui.material.Divider
-import androidx.ui.material.themeTextStyle
+import androidx.ui.material.MaterialTheme
 
 class DividersSpacersActivity : MaterialDemoActivity() {
 
@@ -75,7 +75,7 @@
     @Composable
     fun Item(text: String, color: Color? = null) {
         val avatarSize = ItemSize - ItemPadding * 2
-        val textStyle = +themeTextStyle { body1 }
+        val textStyle = (+MaterialTheme.typography()).body1
         Container(height = ItemSize, padding = EdgeInsets(ItemPadding)) {
             Row(crossAxisAlignment = CrossAxisAlignment.Center) {
                 if (color != null) {
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
index ea4ef71..681dc97 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
@@ -24,7 +24,6 @@
 import androidx.compose.memo
 import androidx.compose.unaryPlus
 import androidx.ui.core.Alignment
-import androidx.ui.core.Px
 import androidx.ui.core.Text
 import androidx.ui.core.dp
 import androidx.ui.core.setContent
@@ -51,7 +50,6 @@
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.TopAppBar
 import androidx.ui.material.surface.Surface
-import androidx.ui.material.themeTextStyle
 import androidx.ui.text.TextStyle
 import kotlin.math.round
 
@@ -125,7 +123,7 @@
     BottomAppBar<Any>(fabConfiguration = FabConfiguration(fab = {
         FloatingActionButton(
             text = fabText,
-            textStyle = +themeTextStyle { h5 },
+            textStyle = (+MaterialTheme.typography()).h5,
             color = secondary,
             >
         )
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/RippleDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/RippleDemo.kt
index 72f308d..06ab48e 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/RippleDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/RippleDemo.kt
@@ -30,7 +30,6 @@
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.ripple.Ripple
 import androidx.ui.material.surface.Card
-import androidx.ui.material.themeTextStyle
 
 @Composable
 fun RippleDemo() {
@@ -45,7 +44,10 @@
                         Container(expanded = true) {
                             Ripple(bounded = true) {
                                 Container(width = 100.dp, height = 50.dp) {
-                                    Text(text = "inner", style = +themeTextStyle { body1 })
+                                    Text(
+                                        text = "inner",
+                                        style = (+MaterialTheme.typography()).body1
+                                    )
                                 }
                             }
                         }
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsActivity.kt
index dc0aa64..d4d3b78 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsActivity.kt
@@ -25,19 +25,19 @@
 import androidx.ui.layout.CrossAxisAlignment
 import androidx.ui.layout.EdgeInsets
 import androidx.ui.layout.Padding
-import androidx.ui.material.surface.Surface
-import androidx.ui.material.samples.TriStateCheckboxSample
-import androidx.ui.material.samples.SwitchSample
+import androidx.ui.material.MaterialTheme
 import androidx.ui.material.samples.CustomRadioGroupSample
 import androidx.ui.material.samples.DefaultRadioGroupSample
 import androidx.ui.material.samples.RadioButtonSample
-import androidx.ui.material.themeTextStyle
+import androidx.ui.material.samples.SwitchSample
+import androidx.ui.material.samples.TriStateCheckboxSample
+import androidx.ui.material.surface.Surface
 
 class SelectionControlsActivity : MaterialDemoActivity() {
 
     @Composable
     override fun materialContent() {
-        val headerStyle = +themeTextStyle { h6 }
+        val headerStyle = (+MaterialTheme.typography()).h6
         val padding = EdgeInsets(10.dp)
 
         Surface(color = Color.White) {
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TextActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TextActivity.kt
index 2278a98..2e4c04c 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TextActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TextActivity.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.Composable
 import androidx.ui.core.Text
-import androidx.ui.material.themeTextStyle
 import androidx.ui.graphics.Color
 import androidx.compose.unaryPlus
+import androidx.ui.material.MaterialTheme
 
 open class TextActivity : MaterialDemoActivity() {
 
@@ -29,6 +29,6 @@
         val textColor = Color(0xFFFF0000)
         Text(
             text = "Hello",
-            style = +themeTextStyle { h1.copy(color = textColor) })
+            style = (+MaterialTheme.typography()).h1.copy(color = textColor))
     }
 }
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt
index 362c128..163762b 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyCards.kt
@@ -44,7 +44,6 @@
 import androidx.ui.material.TextButtonStyle
 import androidx.ui.material.ripple.Ripple
 import androidx.ui.material.surface.Card
-import androidx.ui.material.themeTextStyle
 import java.util.Locale
 
 /**
@@ -73,7 +72,7 @@
                             modifier = Spacing(12.dp) wraps ExpandedWidth,
                             mainAxisAlignment = MainAxisAlignment.SpaceBetween
                         ) {
-                            Text(text = "Alerts", style = +themeTextStyle { subtitle2 })
+                            Text(text = "Alerts", style = (+MaterialTheme.typography()).subtitle2)
                             Button(text = "See All",  }, style = TextButtonStyle())
                         }
                     }
@@ -89,7 +88,7 @@
                     Container {
                         Row(Spacing(12.dp)) {
                             Text(
-                                style = +themeTextStyle { body1 },
+                                style = (+MaterialTheme.typography()).body1,
                                 modifier = Flexible(1f),
                                 text = alertMessage
                             )
@@ -113,8 +112,8 @@
     Card {
         Column {
             Column(modifier = Spacing(12.dp)) {
-                Text(text = "Accounts", style = +themeTextStyle { body1 })
-                Text(text = "$12,132.49", style = +themeTextStyle { h3 })
+                Text(text = "Accounts", style = (+MaterialTheme.typography()).body1)
+                Text(text = "$12,132.49", style = (+MaterialTheme.typography()).h3)
             }
             Divider(color = rallyGreen, height = 1.dp)
             Column(modifier = Spacing(12.dp)) {
@@ -161,8 +160,8 @@
                                 DrawAnimatedCircle(accountsProportion, colors)
                             }
                             Column(crossAxisAlignment = CrossAxisAlignment.Center) {
-                                Text(text = "Total", style = +themeTextStyle { body1 })
-                                Text(text = "$12,132.49", style = +themeTextStyle { h3 })
+                                Text(text = "Total", style = (+MaterialTheme.typography()).body1)
+                                Text(text = "$12,132.49", style = (+MaterialTheme.typography()).h3)
                             }
                         }
                     }
@@ -212,15 +211,15 @@
             AccountIndicator(color = color)
             WidthSpacer(width = 8.dp)
             Column(crossAxisAlignment = CrossAxisAlignment.Start) {
-                Text(text = name, style = +themeTextStyle { body1 })
-                Text(text = "•••••$number", style = +themeTextStyle { subtitle1 })
+                Text(text = name, style = (+MaterialTheme.typography()).body1)
+                Text(text = "•••••$number", style = (+MaterialTheme.typography()).subtitle1)
             }
         }
         expanded(flex = 1.0f) {
             FixedSpacer(width = 0.dp, height = 0.dp)
         }
         inflexible {
-            Text(text = "$ $amount", style = +themeTextStyle { h6 })
+            Text(text = "$ $amount", style = (+MaterialTheme.typography()).h6)
         }
     }
 }
@@ -241,8 +240,8 @@
     Card {
         Column {
             Column(modifier = Spacing(12.dp)) {
-                Text(text = "Bills", style = +themeTextStyle { subtitle2 })
-                Text(text = "$1,810.00", style = +themeTextStyle { h3 })
+                Text(text = "Bills", style = (+MaterialTheme.typography()).subtitle2)
+                Text(text = "$1,810.00", style = (+MaterialTheme.typography()).h3)
             }
             Divider(color = rallyGreen, height = 1.dp)
             // TODO: change to proper bill items
@@ -291,8 +290,8 @@
                         DrawAnimatedCircle(accountsProportion, colors)
                     }
                     Column(crossAxisAlignment = CrossAxisAlignment.Center) {
-                        Text(text = "Due", style = +themeTextStyle { body1 })
-                        Text(text = "$1,810.00", style = +themeTextStyle { h3 })
+                        Text(text = "Due", style = (+MaterialTheme.typography()).body1)
+                        Text(text = "$1,810.00", style = (+MaterialTheme.typography()).h3)
                     }
                 }
             }
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyTheme.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyTheme.kt
index 8ba5984..ff10252 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyTheme.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyTheme.kt
@@ -17,14 +17,12 @@
 package androidx.ui.material.studies.rally
 
 import androidx.compose.Composable
-import androidx.compose.ambient
 import androidx.compose.unaryPlus
 import androidx.ui.core.em
 import androidx.ui.core.sp
 import androidx.ui.graphics.Color
 import androidx.ui.material.ColorPalette
 import androidx.ui.material.MaterialTheme
-import androidx.ui.material.MaterialTypography
 import androidx.ui.material.Typography
 import androidx.ui.text.TextStyle
 import androidx.ui.text.font.FontFamily
@@ -46,7 +44,7 @@
         background = Color(0xFF26282F),
         >
     )
-    val typography = MaterialTypography(
+    val typography = Typography(
         h1 = TextStyle(fontFamily = FontFamily("RobotoCondensed"),
             fontWeight = FontWeight.W100,
             fontSize = 96.sp),
@@ -98,7 +96,7 @@
         surface = Color(0xFF1E1E1E),
         >
     )
-    val currentTypography = +ambient(Typography)
+    val currentTypography = +MaterialTheme.typography()
     val dialogTypography = currentTypography.copy(
         body1 = currentTypography.body1.copy(
             fontFamily = FontFamily("RobotoCondensed"),
@@ -111,4 +109,4 @@
         )
     )
     MaterialTheme(colors = dialogColors, typography = dialogTypography, children = children)
-}
\ No newline at end of file
+}
diff --git a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
index 9f748878..9fc9fc9 100644
--- a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
+++ b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
@@ -46,9 +46,9 @@
 import androidx.ui.layout.Padding
 import androidx.ui.material.Tab
 import androidx.ui.material.TabRow
-import androidx.ui.material.themeTextStyle
 import androidx.ui.graphics.Image
 import androidx.ui.layout.ExpandedHeight
+import androidx.ui.material.MaterialTheme
 
 @Sampled
 @Composable
@@ -65,7 +65,7 @@
             Center {
                 Text(
                     text = "Text tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -86,7 +86,7 @@
             Center {
                 Text(
                     text = "Icon tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -112,7 +112,7 @@
             Center {
                 Text(
                     text = "Text and icon tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -144,7 +144,7 @@
             Center {
                 Text(
                     text = "Scrolling text tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -170,7 +170,7 @@
             Center {
                 Text(
                     text = "Fancy tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -204,7 +204,7 @@
             Center {
                 Text(
                     text = "Fancy indicator tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -235,7 +235,7 @@
             Center {
                 Text(
                     text = "Fancy transition tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -276,7 +276,7 @@
             Center {
                 Text(
                     text = "Scrolling fancy transition tab ${state.value + 1} selected",
-                    style = +themeTextStyle { body1 }
+                    style = (+MaterialTheme.typography()).body1
                 )
             }
         }
@@ -296,7 +296,7 @@
                 val color = if (selected) Color.Red else Color.Gray
                 ColoredRect(height = 10.dp, width = 10.dp, color = color)
                 Padding(5.dp) {
-                    Text(text = title, style = +themeTextStyle { body1 })
+                    Text(text = title, style = (+MaterialTheme.typography()).body1)
                 }
             }
         }
diff --git a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
index ccf1c58..2a3412f 100644
--- a/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
+++ b/ui/ui-material/integration-tests/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
@@ -26,13 +26,11 @@
 import androidx.ui.material.ColorPalette
 import androidx.ui.material.FloatingActionButton
 import androidx.ui.material.MaterialTheme
-import androidx.ui.material.MaterialTypography
-import androidx.ui.material.themeTextStyle
+import androidx.ui.material.Typography
 import androidx.ui.text.TextStyle
 import androidx.ui.text.font.FontFamily
 import androidx.ui.text.font.FontWeight
 
-// TODO: add shape theme
 @Sampled
 @Composable
 fun MaterialThemeSample() {
@@ -42,7 +40,7 @@
         >
     )
 
-    val typography = MaterialTypography(
+    val typography = Typography(
         h1 = TextStyle(fontFamily = FontFamily("RobotoCondensed"),
             fontWeight = FontWeight.W100,
             fontSize = 96.sp),
@@ -67,5 +65,5 @@
 @Sampled
 @Composable
 fun ThemeTextStyleSample() {
-    Text(text = "H4 styled text", style = +themeTextStyle { h4 })
+    Text(text = "H4 styled text", style = (+MaterialTheme.typography()).h4)
 }
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt
index ab5413a..c534b07 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/AppBarTest.kt
@@ -243,7 +243,7 @@
                     title = {
                         Text("App Bar Title")
                         textStyle = +currentTextStyle()
-                        h6Style = +themeTextStyle { h6 }
+                        h6Style = (+MaterialTheme.typography()).h6
                     }
                 )
             }
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
index 48800b0..746c116 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
@@ -199,10 +199,9 @@
     fun buttonTest_ContainedButtonPropagateDefaultTextStyle() {
         composeTestRule.setMaterialContent {
             Button( style = ContainedButtonStyle()) {
-                Truth.assertThat(+currentTextStyle())
-                    .isEqualTo(+themeTextStyle {
-                        button.copy(color = (+MaterialTheme.colors()).onPrimary)
-                    })
+                val style = (+MaterialTheme.typography()).button
+                    .copy(color = (+MaterialTheme.colors()).onPrimary)
+                Truth.assertThat(+currentTextStyle()).isEqualTo(style)
             }
         }
     }
@@ -211,10 +210,9 @@
     fun buttonTest_OutlinedButtonPropagateDefaultTextStyle() {
         composeTestRule.setMaterialContent {
             Button( style = OutlinedButtonStyle()) {
-                Truth.assertThat(+currentTextStyle())
-                    .isEqualTo(+themeTextStyle {
-                        button.copy(color = (+MaterialTheme.colors()).primary)
-                    })
+                val style = (+MaterialTheme.typography()).button
+                    .copy(color = (+MaterialTheme.colors()).primary)
+                Truth.assertThat(+currentTextStyle()).isEqualTo(style)
             }
         }
     }
@@ -223,10 +221,9 @@
     fun buttonTest_TextButtonPropagateDefaultTextStyle() {
         composeTestRule.setMaterialContent {
             Button( style = OutlinedButtonStyle()) {
-                Truth.assertThat(+currentTextStyle())
-                    .isEqualTo(+themeTextStyle {
-                        button.copy(color = (+MaterialTheme.colors()).primary)
-                    })
+                val style = (+MaterialTheme.typography()).button
+                    .copy(color = (+MaterialTheme.colors()).primary)
+                Truth.assertThat(+currentTextStyle()).isEqualTo(style)
             }
         }
     }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt b/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
index a9828b6..f84da65 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
@@ -17,7 +17,6 @@
 package androidx.ui.material
 
 import androidx.compose.Composable
-import androidx.compose.ambient
 import androidx.compose.unaryPlus
 import androidx.ui.core.Alignment
 import androidx.ui.core.CurrentTextStyleProvider
@@ -33,6 +32,8 @@
 import androidx.ui.layout.MainAxisAlignment
 import androidx.ui.layout.Row
 import androidx.ui.layout.WidthSpacer
+import androidx.ui.material.AlertDialogButtonLayout.SideBySide
+import androidx.ui.material.AlertDialogButtonLayout.Stacked
 import androidx.ui.material.surface.Surface
 
 /**
@@ -53,9 +54,9 @@
  * or pressing the back button.
  * @param title The title of the Dialog which should specify the purpose of the Dialog. The title
  * is not mandatory, because there may be sufficient information inside the [text]. Provided text
- * style will be [MaterialTypography.h6].
+ * style will be [Typography.h6].
  * @param text The text which presents the details regarding the Dialog's purpose. Provided text
- * style will be [MaterialTypography.body1].
+ * style will be [Typography.body1].
  * @param confirmButton A button which is meant to confirm a proposed action, thus resolving
  * what triggered the dialog.
  * @param dismissButton A button which is meant to dismiss the dialog.
@@ -97,9 +98,9 @@
  * or pressing the back button.
  * @param title The title of the Dialog which should specify the purpose of the Dialog. The title
  * is not mandatory, because there may be sufficient information inside the [text]. Provided text
- * style will be [MaterialTypography.h6].
+ * style will be [Typography.h6].
  * @param text The text which presents the details regarding the Dialog's purpose. Provided text
- * style will be [MaterialTypography.body1].
+ * style will be [Typography.body1].
  * @param buttons Function that emits the layout with the buttons
  */
 @Suppress("USELESS_CAST")
@@ -111,8 +112,8 @@
     buttons: @Composable() () -> Unit
 ) {
     // TODO: Find a cleaner way to pass the properties of the MaterialTheme
-    val currentColors: ColorPalette = +MaterialTheme.colors()
-    val currentTypography = +ambient(Typography)
+    val currentColors = +MaterialTheme.colors()
+    val currentTypography = +MaterialTheme.typography()
     Dialog( {
         MaterialTheme(colors = currentColors, typography = currentTypography) {
             Surface(shape = AlertDialogShape) {
@@ -123,7 +124,7 @@
                                 alignment = Alignment.CenterLeft,
                                 padding = TitlePadding
                             ) {
-                                val textStyle = +themeTextStyle { h6 }
+                                val textStyle = (+MaterialTheme.typography()).h6
                                 CurrentTextStyleProvider(textStyle, title)
                             }
                         } else {
@@ -133,7 +134,7 @@
                         }
 
                         Container(alignment = Alignment.CenterLeft, padding = TextPadding) {
-                            val textStyle = +themeTextStyle { body1 }
+                            val textStyle = (+MaterialTheme.typography()).body1
                             CurrentTextStyleProvider(textStyle, text)
                         }
                         HeightSpacer(height = TextToButtonsHeight)
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
index 9eb06eaef..74196e2 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
@@ -91,7 +91,7 @@
         startContent = navigationIcon,
         title = {
             // Text color comes from the underlying Surface
-            CurrentTextStyleProvider(value = +themeTextStyle { h6 }, children = title)
+            CurrentTextStyleProvider(value = (+MaterialTheme.typography()).h6, children = title)
         },
         endContent = null
     )
@@ -134,7 +134,7 @@
         startContent = navigationIcon,
         title = {
             // Text color comes from the underlying Surface
-            CurrentTextStyleProvider(value = +themeTextStyle { h6 }, children = title)
+            CurrentTextStyleProvider(value = (+MaterialTheme.typography()).h6, children = title)
         },
         endContent = getActions(actionData, MaxIconsInTopAppBar, action)
     )
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Button.kt b/ui/ui-material/src/main/java/androidx/ui/material/Button.kt
index 73603bc..a8c56ac 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Button.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Button.kt
@@ -85,7 +85,7 @@
  */
 fun ContainedButtonStyle(
     color: Color = (+MaterialTheme.colors()).primary,
-    shape: Shape = +themeShape { button },
+    shape: Shape = (+MaterialTheme.shapes()).button,
     elevation: Dp = 2.dp,
     rippleColor: Color? = null
 ) = ButtonStyle(
@@ -123,7 +123,7 @@
         1.dp
     ),
     color: Color = (+MaterialTheme.colors()).surface,
-    shape: Shape = +themeShape { button },
+    shape: Shape = (+MaterialTheme.shapes()).button,
     elevation: Dp = 0.dp,
     contentColor: Color? = (+MaterialTheme.colors()).primary
 ) = ButtonStyle(
@@ -151,7 +151,7 @@
  * @param contentColor The color used by text and Ripple.
  */
 fun TextButtonStyle(
-    shape: Shape = +themeShape { button },
+    shape: Shape = (+MaterialTheme.shapes()).button,
     contentColor: Color? = (+MaterialTheme.colors()).primary
 ) = ButtonStyle(
     color = Color.Transparent,
@@ -167,7 +167,7 @@
  * To make a button clickable, you must provide an onClick. If no onClick is provided, this button will display
  * itself as disabled.
  *
- * The default text style for internal [Text] components will be set to [MaterialTypography.button]. Text color will
+ * The default text style for internal [Text] components will be set to [Typography.button]. Text color will
  * try to match the correlated color for the background color. For example if the background color is set to
  * [ColorPalette.primary] then the text will by default use [ColorPalette.onPrimary].
  *
@@ -192,7 +192,7 @@
             Clickable( {
                 Container(constraints = ButtonConstraints, padding = style.paddings) {
                     CurrentTextStyleProvider(
-                        value = +themeTextStyle { button.merge(style.textStyle) },
+                        value = (+MaterialTheme.typography()).button.merge(style.textStyle),
                         children = children
                     )
                 }
@@ -208,7 +208,7 @@
  * To make a button clickable, you must provide an onClick. If no onClick is provided, this button will display
  * itself as disabled.
  *
- * The default text style for internal [Text] components will be set to [MaterialTypography.button]. Text color will
+ * The default text style for internal [Text] components will be set to [Typography.button]. Text color will
  * try to match the correlated color for the background color. For example if the background color is set to
  * [ColorPalette.primary] then the text will by default use [ColorPalette.onPrimary].
  *
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Color.kt b/ui/ui-material/src/main/java/androidx/ui/material/Color.kt
index 463b591..f3fa80c 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Color.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Color.kt
@@ -123,7 +123,7 @@
 /**
  * Default observable backing implementation for [ColorPalette].
  *
- * Typically we would just change the value of the [Colors] ambient when the theme changes, but
+ * Typically we would just change the value of the [ColorAmbient] ambient when the theme changes, but
  * in the case of wide-reaching data such as colors in the [MaterialTheme], this will cause almost
  * every UI component on a screen to be recomposed. In reality, we only want to recompose
  * components that consume the specific color(s) that have been changed - so this default
@@ -209,7 +209,7 @@
 
 /**
  * Memoizes and mutates the given [colorPalette] if it is an [ObservableColorPalette], otherwise
- * just provides the given palette in the [Colors] [Ambient].
+ * just provides the given palette in the [ColorAmbient] [Ambient].
  */
 @Composable
 internal fun ProvideColorPalette(colorPalette: ColorPalette, children: @Composable() () -> Unit) {
@@ -221,7 +221,7 @@
         }
         else -> colorPalette
     }
-    Colors.Provider(palette, children)
+    ColorAmbient.Provider(palette, children)
 }
 
 /**
@@ -229,4 +229,4 @@
  *
  * To retrieve the current value of this ambient, use [MaterialTheme.colors].
  */
-internal val Colors = Ambient.of { ColorPalette() }
+internal val ColorAmbient = Ambient.of { ColorPalette() }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt b/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt
index b1d925f..14fe7a1 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt
@@ -50,7 +50,7 @@
  *  when it is null.
  * @param minSize Minimum size of the button. Defaults to [FabSize]
  * @param shape Defines the Button's shape as well its shadow. When null is provided it uses
- *  the [Shapes.button] from [CurrentShapeAmbient].
+ *  the [Shapes.button] from [ShapeAmbient].
  * @param color The background color
  * @param elevation The z-coordinate at which to place this button. This controls the size
  *  of the shadow below the button.
@@ -68,7 +68,7 @@
         Ripple(bounded = true, enabled = onClick != null) {
             Clickable(onClick) {
                 Container(constraints = DpConstraints(minWidth = minSize, minHeight = minSize)) {
-                    CurrentTextStyleProvider(+themeTextStyle { button }, children)
+                    CurrentTextStyleProvider((+MaterialTheme.typography()).button, children)
                 }
             }
         }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
index aa9b60a..8a84047 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
@@ -469,7 +469,7 @@
 }
 
 private data class ListItemTextStyle(
-    val style: MaterialTypography.() -> TextStyle,
+    val style: Typography.() -> TextStyle,
     val color: ColorPalette.() -> Color,
     val opacity: Float
 )
@@ -481,8 +481,9 @@
     if (children == null) return null
     return {
         val colors = +MaterialTheme.colors()
+        val typography = +MaterialTheme.typography()
         val textColor = textStyle.color(colors).copy(alpha = textStyle.opacity)
-        val appliedTextStyle = (+themeTextStyle(textStyle.style)).copy(color = textColor)
+        val appliedTextStyle = textStyle.style(typography).copy(color = textColor)
         CurrentTextStyleProvider(appliedTextStyle, children)
     }
 }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/MaterialTheme.kt b/ui/ui-material/src/main/java/androidx/ui/material/MaterialTheme.kt
index 8ac5b6e..eeccfeb 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/MaterialTheme.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/MaterialTheme.kt
@@ -16,20 +16,9 @@
 
 package androidx.ui.material
 
-import androidx.annotation.CheckResult
-import androidx.compose.Ambient
 import androidx.compose.Composable
 import androidx.compose.ambient
-import androidx.compose.effectOf
 import androidx.ui.core.CurrentTextStyleProvider
-import androidx.ui.core.dp
-import androidx.ui.core.sp
-import androidx.ui.engine.geometry.Shape
-import androidx.ui.foundation.shape.RectangleShape
-import androidx.ui.foundation.shape.corner.RoundedCornerShape
-import androidx.ui.text.TextStyle
-import androidx.ui.text.font.FontFamily
-import androidx.ui.text.font.FontWeight
 
 /**
  * This component defines the styling principles from the Material design specification. It must be
@@ -42,7 +31,7 @@
  * and the typography defined in the [Material Type Scale spec](https://material.io/design/typography/the-type-system.html#type-scale).
  *
  * All values may be set by providing this component with the [colors][ColorPalette] and
- * [typography][MaterialTypography] attributes. Use this to configure the overall theme of your
+ * [typography][Typography] attributes. Use this to configure the overall theme of your
  * application.
  *
  * @sample androidx.ui.material.samples.MaterialThemeSample
@@ -53,140 +42,37 @@
 @Composable
 fun MaterialTheme(
     colors: ColorPalette = ColorPalette(),
-    typography: MaterialTypography = MaterialTypography(),
+    typography: Typography = Typography(),
     children: @Composable() () -> Unit
 ) {
     ProvideColorPalette(colors) {
-        Typography.Provider(value = typography) {
+        TypographyAmbient.Provider(value = typography) {
             CurrentTextStyleProvider(value = typography.body1, children = children)
         }
     }
 }
 
+/**
+ * Contains functions to access the current theme values provided at the call site's position in
+ * the hierarchy.
+ */
 object MaterialTheme {
     /**
      * Retrieves the current [ColorPalette] at the call site's position in the hierarchy.
      *
      * @sample androidx.ui.material.samples.ThemeColorSample
      */
-    fun colors() = ambient(Colors)
-}
+    fun colors() = ambient(ColorAmbient)
 
-/**
- * This Ambient holds on to the current definition of typography for this application as described
- * by the Material spec.  You can read the values in it when creating custom components that want
- * to use Material types, as well as override the values when you want to re-style a part of your
- * hierarchy. Material components related to text such as [Button] will use this Ambient
- * to set values with which to style children text components.
- *
- * To access values within this ambient, use [themeTextStyle].
- */
-val Typography = Ambient.of { MaterialTypography() }
-
-/**
- * Data class holding typography definitions as defined by the [Material typography specification](https://material.io/design/typography/the-type-system.html#type-scale).
- */
-data class MaterialTypography(
-    // TODO(clara): case
-    // TODO(clara): letter spacing (specs don't match)
-    // TODO(clara): b/123001228 need a font abstraction layer
-    // TODO(clara): fontSize should be a Dp, translating here will loose context changes
-    val h1: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.W100,
-        fontSize = 96.sp),
-    val h2: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.W100,
-        fontSize = 60.sp),
-    val h3: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 48.sp),
-    val h4: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 34.sp),
-    val h5: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 24.sp),
-    val h6: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.W500,
-        fontSize = 20.sp),
-    val subtitle1: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 16.sp),
-    val subtitle2: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.W500,
-        fontSize = 14.sp),
-    val body1: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 16.sp),
-    val body2: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 14.sp),
-    val button: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.W500,
-        fontSize = 14.sp),
-    val caption: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 12.sp),
-    val overline: TextStyle = TextStyle(
-        fontFamily = FontFamily("Roboto"),
-        fontWeight = FontWeight.Normal,
-        fontSize = 10.sp)
-)
-
-/**
- * Helper effect that resolves [TextStyle]s from the [Typography] ambient by applying
- * [choosingBlock].
- *
- * @sample androidx.ui.material.samples.ThemeTextStyleSample
- */
-@CheckResult(suggest = "+")
-fun themeTextStyle(
-    choosingBlock: MaterialTypography.() -> TextStyle
-) = effectOf<TextStyle> {
-    (+ambient(Typography)).choosingBlock()
-}
-
-// Shapes
-
-/**
- * Data class holding current shapes for common surfaces like Button or Card.
- */
-// TODO(Andrey): should have small, medium, large components categories. b/129278276
-// See https://material.io/design/shape/applying-shape-to-ui.html#baseline-shape-values
-data class Shapes(
     /**
-     * Shape used for [Button]
+     * Retrieves the current [Typography] at the call site's position in the hierarchy.
+     *
+     * @sample androidx.ui.material.samples.ThemeTextStyleSample
      */
-    val button: Shape = RoundedCornerShape(4.dp),
+    fun typography() = ambient(TypographyAmbient)
+
     /**
-     * Shape used for [androidx.ui.material.surface.Card]
+     * Retrieves the current [Shapes] at the call site's position in the hierarchy.
      */
-    val card: Shape = RectangleShape
-    // TODO(Andrey): Add shapes for other surfaces? will see what we need.
-)
-
-/**
- * Ambient used to specify the default shapes for the surfaces.
- */
-val CurrentShapeAmbient = Ambient.of { Shapes() }
-
-/**
- * Helper effect to resolve [Shape]s from the [CurrentShapeAmbient] ambient by applying
- * [choosingBlock].
- */
-@CheckResult(suggest = "+")
-fun themeShape(
-    choosingBlock: Shapes.() -> Shape
-) = effectOf<Shape> { (+ambient(CurrentShapeAmbient)).choosingBlock() }
+    fun shapes() = ambient(ShapeAmbient)
+}
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt b/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
index 069f7ba..96f0294 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
@@ -164,7 +164,10 @@
                 Row(ExpandedWidth, mainAxisAlignment = MainAxisAlignment.Start) {
                     RadioButton(selected = selected,  color = radioColor)
                     Padding(left = DefaultRadioLabelOffset) {
-                        Text(text = text, style = +themeTextStyle { body1.merge(textStyle) })
+                        Text(
+                            text = text,
+                            style = (+MaterialTheme.typography()).body1.merge(textStyle)
+                        )
                     }
                 }
             }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Shape.kt b/ui/ui-material/src/main/java/androidx/ui/material/Shape.kt
new file mode 100644
index 0000000..e9c00cf
--- /dev/null
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Shape.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.ui.material
+
+import androidx.compose.Ambient
+import androidx.ui.core.dp
+import androidx.ui.engine.geometry.Shape
+import androidx.ui.foundation.shape.RectangleShape
+import androidx.ui.foundation.shape.corner.RoundedCornerShape
+
+/**
+ * Data class holding current shapes for common surfaces like Button or Card.
+ */
+// TODO(Andrey): should have small, medium, large components categories. b/129278276
+// See https://material.io/design/shape/applying-shape-to-ui.html#baseline-shape-values
+data class Shapes(
+    /**
+     * Shape used for [Button]
+     */
+    val button: Shape = RoundedCornerShape(4.dp),
+    /**
+     * Shape used for [androidx.ui.material.surface.Card]
+     */
+    val card: Shape = RectangleShape
+    // TODO(Andrey): Add shapes for other surfaces? will see what we need.
+)
+
+/**
+ * Ambient used to specify the default shapes for the surfaces.
+ */
+internal val ShapeAmbient = Ambient.of { Shapes() }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
index e4b1931..4896c05 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
@@ -578,7 +578,7 @@
 
 @Composable
 private fun TabText(text: String, color: Color) {
-    val buttonTextStyle = +themeTextStyle { button }
+    val buttonTextStyle = (+MaterialTheme.typography()).button
     Padding(left = HorizontalTextPadding, right = HorizontalTextPadding) {
         Text(
             text = text,
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Typography.kt b/ui/ui-material/src/main/java/androidx/ui/material/Typography.kt
new file mode 100644
index 0000000..fc3a963
--- /dev/null
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Typography.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.ui.material
+
+import androidx.compose.Ambient
+import androidx.ui.core.sp
+import androidx.ui.text.TextStyle
+import androidx.ui.text.font.FontFamily
+import androidx.ui.text.font.FontWeight
+
+/**
+ * Data class holding typography definitions as defined by the [Material typography specification](https://material.io/design/typography/the-type-system.html#type-scale).
+ */
+data class Typography(
+    // TODO(clara): case
+    // TODO(clara): letter spacing (specs don't match)
+    // TODO(clara): b/123001228 need a font abstraction layer
+    val h1: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.W100,
+        fontSize = 96.sp),
+    val h2: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.W100,
+        fontSize = 60.sp),
+    val h3: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 48.sp),
+    val h4: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 34.sp),
+    val h5: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 24.sp),
+    val h6: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.W500,
+        fontSize = 20.sp),
+    val subtitle1: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 16.sp),
+    val subtitle2: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.W500,
+        fontSize = 14.sp),
+    val body1: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 16.sp),
+    val body2: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 14.sp),
+    val button: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.W500,
+        fontSize = 14.sp),
+    val caption: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 12.sp),
+    val overline: TextStyle = TextStyle(
+        fontFamily = FontFamily("Roboto"),
+        fontWeight = FontWeight.Normal,
+        fontSize = 10.sp)
+)
+
+/**
+ * This Ambient holds on to the current definition of typography for this application as described
+ * by the Material spec.  You can read the values in it when creating custom components that want
+ * to use Material types, as well as override the values when you want to re-style a part of your
+ * hierarchy. Material components related to text such as [Button] will use this Ambient
+ * to set values with which to style children text components.
+ *
+ * To access values within this ambient, use [MaterialTheme.typography].
+ */
+internal val TypographyAmbient = Ambient.of { Typography() }
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/surface/Card.kt b/ui/ui-material/src/main/java/androidx/ui/material/surface/Card.kt
index 878e5c6..a965554 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/surface/Card.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/surface/Card.kt
@@ -24,7 +24,6 @@
 import androidx.ui.foundation.shape.border.Border
 import androidx.ui.graphics.Color
 import androidx.ui.material.MaterialTheme
-import androidx.ui.material.themeShape
 
 /**
  * Cards are [Surface]s that display content and actions on a single topic.
@@ -38,7 +37,7 @@
  */
 @Composable
 fun Card(
-    shape: Shape = +themeShape { card },
+    shape: Shape = (+MaterialTheme.shapes()).card,
     color: Color = (+MaterialTheme.colors()).surface,
     border: Border? = null,
     elevation: Dp = 1.dp,