Removal of FlexRow/FlexColumn

Bug: 145599478
Test: tests passed + manually checked demo
Change-Id: If9ea0ec096578f5ed70547614aad0a02580fc8bf
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
index 2d18bc2..73c48ee 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
@@ -14,6 +14,9 @@
  * limitations under the License.
  */
 
+// TODO(soboleva) Remove deprecated FlexColumn/FlexRow
+@file:Suppress("DEPRECATION")
+
 package androidx.compose.benchmark.realworld4
 
 /**
diff --git a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt
index bf87f44..2c54406 100644
--- a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt
+++ b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/CheckboxesInRowsTestCase.kt
@@ -20,11 +20,11 @@
 import androidx.compose.State
 import androidx.compose.state
 import androidx.compose.unaryPlus
-import androidx.ui.core.Alignment
+import androidx.ui.core.Modifier
 import androidx.ui.core.Text
-import androidx.ui.layout.Align
 import androidx.ui.layout.Column
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.LayoutAlign
+import androidx.ui.layout.Row
 import androidx.ui.material.Checkbox
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.surface.Surface
@@ -47,15 +47,9 @@
             Surface {
                 Column {
                     repeat(amountOfCheckboxes) {
-                        FlexRow {
-                            inflexible {
-                                Text(text = "Check Me!")
-                            }
-                            expanded(1f) {
-                                Align(alignment = Alignment.CenterRight) {
-                                    CheckboxWithState()
-                                }
-                            }
+                        Row {
+                            Text(text = "Check Me!")
+                            CheckboxWithState(LayoutFlexible(1f) + LayoutAlign.CenterRight)
                         }
                     }
                 }
@@ -69,12 +63,13 @@
     }
 
     @Composable
-    fun CheckboxWithState() {
+    fun CheckboxWithState(modifier: Modifier = Modifier.None) {
         val state = +state { false }
         states.add(state)
         Checkbox(
             checked = state.value,
-            onCheckedChange = { state.value = !state.value }
+            onCheckedChange = { state.value = !state.value },
+            modifier = modifier
         )
     }
 }
diff --git a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt
index 4f0aa48..52d9047 100644
--- a/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt
+++ b/ui/integration-tests/test/src/main/java/androidx/ui/test/cases/NestedScrollerTestCase.kt
@@ -25,11 +25,11 @@
 import androidx.ui.foundation.ColoredRect
 import androidx.ui.graphics.Color
 import androidx.ui.layout.Column
-import androidx.ui.layout.FlexColumn
 import androidx.ui.foundation.HorizontalScroller
 import androidx.ui.layout.Row
 import androidx.ui.foundation.ScrollerPosition
 import androidx.ui.foundation.VerticalScroller
+import androidx.ui.layout.LayoutExpandedHeight
 import androidx.ui.layout.LayoutExpandedWidth
 import androidx.ui.layout.LayoutGravity
 import androidx.ui.material.MaterialTheme
@@ -71,36 +71,34 @@
             Row(LayoutExpandedWidth) {
                 repeat(6) {
                     WithDensity {
-                        FlexColumn {
+                        Column(LayoutExpandedHeight) {
                             val color = +memo {
                                 val red = Random.nextInt(256)
                                 val green = Random.nextInt(256)
                                 val blue = Random.nextInt(256)
                                 Color(red = red, green = green, blue = blue)
                             }
-                            inflexible {
-                                ColoredRect(
-                                    width = 350.px.toDp(),
-                                    height = 350.px.toDp(),
-                                    color = color
-                                )
+                            ColoredRect(
+                                width = 350.px.toDp(),
+                                height = 350.px.toDp(),
+                                color = color
+                            )
+                            Text(
+                                text = "Some title",
+                                style = TextStyle(Color.Black, 60.px.toSp())
+                            )
+                            Row(LayoutExpandedWidth) {
                                 Text(
-                                    text = "Some title",
-                                    style = TextStyle(Color.Black, 60.px.toSp())
+                                    "3.5 ★",
+                                    style = TextStyle(fontSize = 40.px.toSp()),
+                                    modifier = LayoutGravity.Center
                                 )
-                                Row(LayoutExpandedWidth) {
-                                    Text(
-                                        "3.5 ★",
-                                        style = TextStyle(fontSize = 40.px.toSp()),
-                                        modifier = LayoutGravity.Center
-                                    )
-                                    ColoredRect(
-                                        width = 40.px.toDp(),
-                                        height = 40.px.toDp(),
-                                        color = playStoreColor,
-                                        modifier = LayoutGravity.Center
-                                    )
-                                }
+                                ColoredRect(
+                                    width = 40.px.toDp(),
+                                    height = 40.px.toDp(),
+                                    color = playStoreColor,
+                                    modifier = LayoutGravity.Center
+                                )
                             }
                         }
                     }
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt
index fd63c00..26a32b1 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeActivity.kt
@@ -33,9 +33,11 @@
 import androidx.ui.graphics.Canvas
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Paint
+import androidx.ui.layout.Column
 import androidx.ui.layout.Container
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.LayoutExpanded
+import androidx.ui.layout.LayoutHeight
+import androidx.ui.layout.Row
 import kotlin.random.Random
 
 class CrossfadeActivity : Activity() {
@@ -49,29 +51,23 @@
 @Composable
 private fun CrossfadeDemo() {
     var current by +state { tabs[0] }
-    FlexColumn {
-        inflexible {
-            FlexRow {
-                tabs.forEach {
-                    flexible(flex = 1f) {
-                        PressReleasedGestureDetector(onRelease = {
-                            Log.e("Crossfade", "Switch to $it")
-                            current = it
-                        }) {
-                            Container(expanded = true, height = 48.dp) {
-                                DrawTab(tab = it)
-                            }
-                        }
+    Column {
+        Row {
+            tabs.forEach {
+                PressReleasedGestureDetector(onRelease = {
+                    Log.e("Crossfade", "Switch to $it")
+                    current = it
+                }) {
+                    Container(LayoutFlexible(1f) + LayoutHeight(48.dp)) {
+                        DrawTab(tab = it)
                     }
                 }
             }
         }
-        flexible(1f) {
-            Crossfade(current = current) { tab ->
-                tab.lastInt = +memo { Random.nextInt() }
-                Container(expanded = true) {
-                    DrawTab(tab = tab)
-                }
+        Crossfade(current = current) { tab ->
+            tab.lastInt = +memo { Random.nextInt() }
+            Container(LayoutExpanded) {
+                DrawTab(tab = tab)
             }
         }
     }
diff --git a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt
index 3116e4e..d78d3ce 100644
--- a/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt
+++ b/ui/ui-framework/integration-tests/framework-demos/src/main/java/androidx/ui/framework/demos/PopupActivity.kt
@@ -49,14 +49,14 @@
 import androidx.ui.layout.Container
 import androidx.ui.layout.DpConstraints
 import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.Spacer
+import androidx.ui.layout.Wrap
+import androidx.ui.layout.Arrangement
 import androidx.ui.layout.LayoutExpandedHeight
 import androidx.ui.layout.LayoutExpandedWidth
 import androidx.ui.layout.LayoutGravity
 import androidx.ui.layout.LayoutHeight
-import androidx.ui.layout.MainAxisAlignment
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Wrap
+import androidx.ui.layout.Row
 import androidx.ui.text.TextStyle
 import androidx.ui.text.style.TextAlign
 
@@ -69,68 +69,63 @@
             val totalExamples = 9
 
             Column {
-                FlexRow(
+                Row(
                     LayoutExpandedWidth + LayoutGravity.Center,
-                    mainAxisAlignment = MainAxisAlignment.SpaceBetween
+                    arrangement = Arrangement.SpaceBetween
                 ) {
-                    inflexible {
-                        ClickableTextWithBackground(
-                            text = "Prev",
-                            color = Color.Cyan,
-                            onClick = {
-                                if (exampleIndex.value == 0) {
-                                    exampleIndex.value = totalExamples
-                                }
+                    [email protected](
+                        text = "Prev",
+                        color = Color.Cyan,
+                        onClick = {
+                            if (exampleIndex.value == 0) {
+                                exampleIndex.value = totalExamples
+                            }
 
-                                exampleIndex.value = (exampleIndex.value - 1) % totalExamples
-                            },
-                            padding = EdgeInsets(20.dp)
+                            exampleIndex.value = (exampleIndex.value - 1) % totalExamples
+                        },
+                        padding = EdgeInsets(20.dp)
+                    )
+
+                    Container(
+                        modifier = LayoutFlexible(1f),
+                        alignment = Alignment.Center,
+                        constraints = DpConstraints(maxWidth = 300.dp)
+                    ) {
+                        val description: String = {
+                            when (exampleIndex.value) {
+                                0 -> "Toggle a simple popup"
+                                1 -> "Different content for the popup"
+                                2 -> "Popup's behavior when the parent's size or position " +
+                                        "changes"
+                                3 -> "Aligning the popup below the parent"
+                                4 -> "Aligning the popup inside a parent"
+                                5 -> "Insert an email in the popup and then click outside to " +
+                                        "dismiss"
+                                6 -> "[bug] Undesired visual effect caused by" +
+                                        " having a new size content displayed at the old" +
+                                        " position, until the new one is calculated"
+                                7 -> "The popup is aligning to its parent when the parent is" +
+                                        " inside a Scroller"
+                                8 -> "[bug] The popup is not repositioned " +
+                                        "when the parent is moved by the keyboard"
+                                else -> "Demo description here"
+                            }
+                        }.invoke()
+
+                        Text(
+                            text = description,
+                            style = TextStyle(textAlign = TextAlign.Center)
                         )
                     }
 
-                    expanded(flex = 1f) {
-                        Container(
-                            alignment = Alignment.Center,
-                            constraints = DpConstraints(maxWidth = 300.dp)
-                        ) {
-                            val description: String = {
-                                when (exampleIndex.value) {
-                                    0 -> "Toggle a simple popup"
-                                    1 -> "Different content for the popup"
-                                    2 -> "Popup's behavior when the parent's size or position " +
-                                            "changes"
-                                    3 -> "Aligning the popup below the parent"
-                                    4 -> "Aligning the popup inside a parent"
-                                    5 -> "Insert an email in the popup and then click outside to " +
-                                            "dismiss"
-                                    6 -> "[bug] Undesired visual effect caused by" +
-                                            " having a new size content displayed at the old" +
-                                            " position, until the new one is calculated"
-                                    7 -> "The popup is aligning to its parent when the parent is" +
-                                            " inside a Scroller"
-                                    8 -> "[bug] The popup is not repositioned " +
-                                            "when the parent is moved by the keyboard"
-                                    else -> "Demo description here"
-                                }
-                            }.invoke()
-
-                            Text(
-                                text = description,
-                                style = TextStyle(textAlign = TextAlign.Center)
-                            )
-                        }
-                    }
-
-                    inflexible {
-                        ClickableTextWithBackground(
-                            text = "Next",
-                            color = Color.Cyan,
-                            onClick = {
-                                exampleIndex.value = (exampleIndex.value + 1) % totalExamples
-                            },
-                            padding = EdgeInsets(20.dp)
-                        )
-                    }
+                    [email protected](
+                        text = "Next",
+                        color = Color.Cyan,
+                        onClick = {
+                            exampleIndex.value = (exampleIndex.value + 1) % totalExamples
+                        },
+                        padding = EdgeInsets(20.dp)
+                    )
                 }
 
                 when (exampleIndex.value) {
diff --git a/ui/ui-layout/api/0.1.0-dev03.txt b/ui/ui-layout/api/0.1.0-dev03.txt
index b02f337..30bad1bb 100644
--- a/ui/ui-layout/api/0.1.0-dev03.txt
+++ b/ui/ui-layout/api/0.1.0-dev03.txt
@@ -181,8 +181,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/0.1.0-dev04.txt b/ui/ui-layout/api/0.1.0-dev04.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/0.1.0-dev04.txt
+++ b/ui/ui-layout/api/0.1.0-dev04.txt
@@ -146,8 +146,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/current.txt b/ui/ui-layout/api/current.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/current.txt
+++ b/ui/ui-layout/api/current.txt
@@ -146,8 +146,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
index b02f337..30bad1bb 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev03.txt
@@ -181,8 +181,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev04.txt
@@ -146,8 +146,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/public_plus_experimental_current.txt b/ui/ui-layout/api/public_plus_experimental_current.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/public_plus_experimental_current.txt
+++ b/ui/ui-layout/api/public_plus_experimental_current.txt
@@ -146,8 +146,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev03.txt b/ui/ui-layout/api/restricted_0.1.0-dev03.txt
index b02f337..30bad1bb 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev03.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev03.txt
@@ -181,8 +181,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev04.txt b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev04.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev04.txt
@@ -146,8 +146,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/api/restricted_current.txt b/ui/ui-layout/api/restricted_current.txt
index 2a59b89..09beb9e 100644
--- a/ui/ui-layout/api/restricted_current.txt
+++ b/ui/ui-layout/api/restricted_current.txt
@@ -146,8 +146,8 @@
   public final class FlexKt {
     ctor public FlexKt();
     method public static void Column(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
-    method public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexColumn(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
+    method @Deprecated public static void FlexRow(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, androidx.ui.layout.CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.Start, androidx.ui.layout.LayoutSize crossAxisSize = androidx.ui.layout.LayoutSize.Wrap, kotlin.jvm.functions.Function1<? super androidx.ui.layout.FlexChildren,kotlin.Unit> block);
     method public static void Row(androidx.ui.core.Modifier modifier = Modifier.None, androidx.ui.layout.Arrangement arrangement = Arrangement.Begin, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
   }
 
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt
index 11ec997..07e3e20 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemos.kt
@@ -42,13 +42,11 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Paint
 import androidx.ui.layout.Align
+import androidx.ui.layout.LayoutAlign
 import androidx.ui.layout.AlignmentLineOffset
-import androidx.ui.layout.Center
 import androidx.ui.layout.Column
 import androidx.ui.layout.ConstrainedBox
 import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
 import androidx.ui.layout.LayoutGravity
 import androidx.ui.layout.LayoutPadding
 import androidx.ui.layout.Padding
@@ -110,60 +108,40 @@
 }
 
 @Composable
-fun FlexRowUsage() {
-    FlexRow {
-        expanded(flex = 2f) {
-            Center {
-                SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
-            }
-            SizedRectangle(color = Color(0xFF0000FF), height = 40.dp)
-        }
-        inflexible {
-            SizedRectangle(color = Color(0xFFFF0000), width = 40.dp)
-            SizedRectangle(color = Color(0xFF00FF00), width = 50.dp)
-            SizedRectangle(color = Color(0xFF0000FF), width = 60.dp)
-        }
-        expanded(flex = 1f) {
-            SizedRectangle(color = Color(0xFF00FF00))
-        }
-    }
-}
-
-@Composable
-fun FlexColumnUsage() {
-    FlexColumn {
-        expanded(flex = 2f) {
-            Center {
-                SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
-            }
-            SizedRectangle(color = Color(0xFF0000FF), width = 40.dp)
-        }
-        inflexible {
-            SizedRectangle(color = Color(0xFFFF0000), height = 40.dp)
-            SizedRectangle(color = Color(0xFF00FF00), height = 50.dp)
-            SizedRectangle(color = Color(0xFF0000FF), height = 60.dp)
-        }
-        expanded(flex = 1f) {
-            SizedRectangle(color = Color(0xFF00FF00))
-        }
-    }
-}
-
-@Composable
 fun RowUsage() {
     Row {
-        SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
-        SizedRectangle(color = Color(0xFFFF0000), width = 40.dp, height = 80.dp)
-        SizedRectangle(color = Color(0xFF00FF00), width = 80.dp, height = 70.dp)
+        SizedRectangle(
+            modifier = LayoutFlexible(2f) + LayoutAlign.Center,
+            color = Color(0xFF0000FF),
+            width = 40.dp,
+            height = 40.dp
+        )
+        SizedRectangle(
+            modifier = LayoutFlexible(2f),
+            color = Color(0xFF0000FF),
+            height = 40.dp
+        )
+        SizedRectangle(color = Color(0xFFFF0000), width = 40.dp)
+        SizedRectangle(color = Color(0xFF00FF00), width = 50.dp)
+        SizedRectangle(color = Color(0xFF0000FF), width = 60.dp)
+        SizedRectangle(modifier = LayoutFlexible(1f), color = Color(0xFF00FF00))
     }
 }
 
 @Composable
 fun ColumnUsage() {
     Column {
-        SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
-        SizedRectangle(color = Color(0xFFFF0000), width = 40.dp, height = 80.dp)
-        SizedRectangle(color = Color(0xFF00FF00), width = 80.dp, height = 70.dp)
+        SizedRectangle(
+            modifier = LayoutFlexible(2f) + LayoutAlign.Center,
+            color = Color(0xFF0000FF),
+            width = 40.dp,
+            height = 40.dp
+        )
+        SizedRectangle(modifier = LayoutFlexible(2f), color = Color(0xFF0000FF), width = 40.dp)
+        SizedRectangle(color = Color(0xFFFF0000), height = 40.dp)
+        SizedRectangle(color = Color(0xFF00FF00), height = 50.dp)
+        SizedRectangle(color = Color(0xFF0000FF), height = 60.dp)
+        SizedRectangle(modifier = LayoutFlexible(1f), color = Color(0xFF00FF00))
     }
 }
 
diff --git a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt
index 232448f..f180ba5 100644
--- a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt
+++ b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/FlexSample.kt
@@ -23,54 +23,15 @@
 import androidx.ui.core.dp
 import androidx.ui.core.ipx
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Center
 import androidx.ui.layout.Column
 import androidx.ui.layout.Container
 import androidx.ui.layout.LayoutExpandedHeight
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
 import androidx.ui.layout.LayoutGravity
 import androidx.ui.layout.Row
 import androidx.ui.text.TextStyle
 
 @Sampled
 @Composable
-fun SimpleFlexRow() {
-    FlexRow {
-        expanded(flex = 2f) {
-            Center {
-                SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
-            }
-        }
-        inflexible {
-            SizedRectangle(color = Color(0xFFFF0000), width = 40.dp)
-        }
-        expanded(flex = 1f) {
-            SizedRectangle(color = Color(0xFF00FF00))
-        }
-    }
-}
-
-@Sampled
-@Composable
-fun SimpleFlexColumn() {
-    FlexColumn {
-        expanded(flex = 2f) {
-            Center {
-                SizedRectangle(color = Color(0xFF0000FF), width = 40.dp, height = 40.dp)
-            }
-        }
-        inflexible {
-            SizedRectangle(color = Color(0xFFFF0000), height = 40.dp)
-        }
-        expanded(flex = 1f) {
-            SizedRectangle(color = Color(0xFF00FF00))
-        }
-    }
-}
-
-@Sampled
-@Composable
 fun SimpleRow() {
     Row {
         // The child with no flexibility modifier is inflexible by default, will have the specified
diff --git a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
index f4413f4..6947268 100644
--- a/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
+++ b/ui/ui-layout/integration-tests/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
@@ -27,15 +27,14 @@
 import androidx.ui.layout.Column
 import androidx.ui.layout.ConstrainedBox
 import androidx.ui.layout.Container
-import androidx.ui.layout.CrossAxisAlignment
 import androidx.ui.layout.DpConstraints
 import androidx.ui.layout.LayoutExpandedHeight
 import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexRow
 import androidx.ui.layout.MaxIntrinsicHeight
 import androidx.ui.layout.MaxIntrinsicWidth
 import androidx.ui.layout.MinIntrinsicHeight
 import androidx.ui.layout.MinIntrinsicWidth
+import androidx.ui.layout.Row
 import androidx.ui.layout.Wrap
 
 /**
@@ -76,14 +75,14 @@
     }
 }
 
-/*
+/**
  * Builds a layout containing two pieces of text separated by a divider, where the divider
  * is sized according to the height of the longest text.
  *
- * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
+ * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [Row],
  * whose minimum intrinsic height will correspond to the height of the largest [Text]. Then
- * [MinIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * minimum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [Text]s and
+ * [MinIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * minimum intrinsic height, which due to [LayoutExpandedHeight] will force the [Text]s and
  * the divider to use the same height.
  */
 @Sampled
@@ -91,17 +90,19 @@
 fun MatchParentDividerForText() {
     Wrap {
         MinIntrinsicHeight {
-            FlexRow(crossAxisAlignment = CrossAxisAlignment.Stretch) {
-                expanded(flex = 1f) {
-                    Text("This is a really short text")
+            Row {
+                Text(
+                    text = "This is a really short text",
+                    modifier = LayoutFlexible(1f) + LayoutExpandedHeight
+                )
+                Container(width = 1.dp, modifier = LayoutExpandedHeight) {
+                    DrawShape(RectangleShape, Color.Black)
                 }
-                inflexible {
-                    Container(width = 1.dp) { DrawShape(RectangleShape, Color.Black) }
-                }
-                expanded(flex = 1f) {
-                    Text("This is a much much much much much much much much much much" +
-                            " much much much much much much longer text")
-                }
+                Text(
+                    text = "This is a much much much much much much much much much much" +
+                            " much much much much much much longer text",
+                    modifier = LayoutFlexible(1f) + LayoutExpandedHeight
+                )
             }
         }
     }
@@ -113,8 +114,8 @@
  * Here [MaxIntrinsicWidth] is adding a speculative width measurement pass for the [Column],
  * whose maximum intrinsic width will correspond to the preferred width of the largest
  * [ConstrainedBox]. Then [MaxIntrinsicWidth] will measure the [Column] with tight width, the same
- * as the premeasured maximum intrinsic width, which due to [LayoutExpandedWidth] modifiers will force
- * the [ConstrainedBox]s to use the same width.
+ * as the premeasured maximum intrinsic width, which due to [LayoutExpandedWidth] modifiers will
+ * force the [Container]s to use the same width.
  */
 @Sampled
 @Composable
@@ -139,30 +140,31 @@
     }
 }
 
-/*
- * Builds a layout containing two [AspectRatio]s separated by a divider, where the divider
- * is sized according to the height of the taller [AspectRatio].
+/**
+ * Builds a layout containing two [LayoutAspectRatio]s separated by a divider, where the divider
+ * is sized according to the height of the taller [LayoutAspectRatio].
  *
- * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
- * whose maximum intrinsic height will correspond to the height of the taller [AspectRatio]. Then
- * [MaxIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * maximum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [AspectRatio]s
- * and the divider to use the same height.
+ * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [Row], whose
+ * maximum intrinsic height will correspond to the height of the taller [LayoutAspectRatio]. Then
+ * [MaxIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * maximum intrinsic height, which due to [LayoutExpandedHeight] modifier will force the
+ * [LayoutAspectRatio]s and the divider to use the same height.
  */
 @Sampled
 @Composable
 fun MatchParentDividerForAspectRatio() {
     Wrap {
         MaxIntrinsicHeight {
-            FlexRow(crossAxisAlignment = CrossAxisAlignment.Stretch) {
-                expanded(flex = 1f) {
-                    Container(LayoutAspectRatio(2f)) { DrawShape(RectangleShape, Color.Gray) }
+            Row {
+                val modifier = LayoutExpandedHeight + LayoutFlexible(1f)
+                Container(modifier + LayoutAspectRatio(2f)) {
+                    DrawShape(RectangleShape, Color.Gray)
                 }
-                inflexible {
-                    Container(width = 1.dp) { DrawShape(RectangleShape, Color.Black) }
+                Container(width = 1.dp, modifier = LayoutExpandedHeight) {
+                    DrawShape(RectangleShape, Color.Black)
                 }
-                expanded(flex = 1f) {
-                    Container(LayoutAspectRatio(1f)) { DrawShape(RectangleShape, Color.Blue) }
+                Container(modifier + LayoutAspectRatio(1f)) {
+                    DrawShape(RectangleShape, Color.Blue)
                 }
             }
         }
diff --git a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt
index 2a566e7..3901da7 100644
--- a/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt
+++ b/ui/ui-layout/src/androidTest/java/androidx/ui/layout/test/FlexTest.kt
@@ -29,9 +29,7 @@
 import androidx.ui.core.toPx
 import androidx.ui.core.withDensity
 import androidx.ui.layout.ConstrainedBox
-import androidx.ui.layout.CrossAxisAlignment
 import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.MainAxisAlignment
 import androidx.compose.Composable
 import androidx.ui.core.Alignment
 import androidx.ui.core.Constraints
@@ -55,9 +53,8 @@
 import androidx.ui.layout.Container
 import androidx.ui.layout.LayoutExpandedHeight
 import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.FlexRow
 import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutMaxHeight
 import androidx.ui.layout.Row
 import androidx.ui.layout.LayoutSize
 import androidx.ui.layout.Spacer
@@ -220,107 +217,6 @@
     }
 
     @Test
-    fun testRowFlex_withExpandedChildren() = withDensity(density) {
-        val heightDp = 50.dp
-        val childrenHeight = 50.dp.toIntPx()
-
-        val drawLatch = CountDownLatch(2)
-        val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
-        val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
-        show {
-            Container(alignment = Alignment.TopLeft) {
-                FlexRow {
-                    val widthDp = 50.px.toDp()
-
-                    expanded(flex = 1f) {
-                        Container(width = widthDp, height = heightDp) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[0] = coordinates.size
-                                childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-
-                    expanded(flex = 2f) {
-                        Container(width = widthDp, height = (heightDp * 2)) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[1] = coordinates.size
-                                childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-                }
-            }
-        }
-        drawLatch.await(1, TimeUnit.SECONDS)
-
-        val root = findAndroidComposeView()
-        waitForDraw(root)
-
-        assertEquals(
-            PxSize((root.width.px / 3).round().toPx(), childrenHeight.toPx()),
-            childSize[0]
-        )
-        assertEquals(
-            PxSize((root.width.px * 2 / 3).round().toPx(), (heightDp.toPx() * 2).round().toPx()),
-            childSize[1]
-        )
-        assertEquals(PxPosition(0.px, 0.px), childPosition[0])
-        assertEquals(PxPosition((root.width.px / 3).round().toPx(), 0.px), childPosition[1])
-    }
-
-    @Test
-    fun testRowFlex_withFlexibleChildren() = withDensity(density) {
-        val childrenWidthDp = 50.dp
-        val childrenWidth = childrenWidthDp.toIntPx()
-        val childrenHeightDp = 50.dp
-        val childrenHeight = childrenHeightDp.toIntPx()
-
-        val drawLatch = CountDownLatch(2)
-        val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
-        val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
-        show {
-            Container(alignment = Alignment.TopLeft) {
-                FlexRow {
-                    flexible(flex = 1f) {
-                        Container(width = childrenWidthDp, height = childrenHeightDp) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[0] = coordinates.size
-                                childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-
-                    flexible(flex = 2f) {
-                        Container(width = childrenWidthDp, height = (childrenHeightDp * 2)) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[1] = coordinates.size
-                                childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-                }
-            }
-        }
-        drawLatch.await(1, TimeUnit.SECONDS)
-
-        val root = findAndroidComposeView()
-        waitForDraw(root)
-
-        assertEquals(PxSize(childrenWidth.toPx(), childrenHeight.toPx()), childSize[0])
-        assertEquals(
-            PxSize(childrenWidth.toPx(), (childrenHeightDp.toPx() * 2).round().toPx()),
-            childSize[1]
-        )
-        assertEquals(PxPosition(0.px, 0.px), childPosition[0])
-        assertEquals(PxPosition(childrenWidth.toPx(), 0.px), childPosition[1])
-    }
-
-    @Test
     fun testColumn() = withDensity(density) {
         val sizeDp = 50.dp
         val size = sizeDp.toIntPx()
@@ -451,106 +347,6 @@
         assertEquals(PxPosition(0.px, childrenHeight.toPx()), childPosition[1])
     }
 
-    @Test
-    fun testColumnFlex_withExpandedChildren() = withDensity(density) {
-        val widthDp = 50.dp
-        val childrenWidth = widthDp.toIntPx()
-
-        val drawLatch = CountDownLatch(2)
-        val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
-        val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
-        show {
-            Container(alignment = Alignment.TopLeft) {
-                FlexColumn {
-                    val heightDp = 50.px.toDp()
-
-                    expanded(flex = 1f) {
-                        Container(width = widthDp, height = heightDp) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[0] = coordinates.size
-                                childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-
-                    expanded(flex = 2f) {
-                        Container(width = (widthDp * 2), height = heightDp) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[1] = coordinates.size
-                                childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-                }
-            }
-        }
-        drawLatch.await(1, TimeUnit.SECONDS)
-
-        val root = findAndroidComposeView()
-        waitForDraw(root)
-
-        assertEquals(
-            PxSize(childrenWidth.toPx(), (root.height.px / 3).round().toPx()),
-            childSize[0]
-        )
-        assertEquals(
-            PxSize((widthDp.toPx() * 2).round(), (root.height.px * 2 / 3).round()),
-            childSize[1]
-        )
-        assertEquals(PxPosition(0.px, 0.px), childPosition[0])
-        assertEquals(PxPosition(0.px, (root.height.px / 3).round().toPx()), childPosition[1])
-    }
-
-    @Test
-    fun testColumnFlex_withFlexibleChildren() = withDensity(density) {
-        val childrenWidthDp = 50.dp
-        val childrenWidth = childrenWidthDp.toIntPx()
-        val childrenHeightDp = 50.dp
-        val childrenHeight = childrenHeightDp.toIntPx()
-
-        val drawLatch = CountDownLatch(2)
-        val childSize = arrayOf(PxSize(-1.px, -1.px), PxSize(-1.px, -1.px))
-        val childPosition = arrayOf(PxPosition(-1.px, -1.px), PxPosition(-1.px, -1.px))
-        show {
-            Container(alignment = Alignment.TopLeft) {
-                FlexColumn {
-                    flexible(flex = 1f) {
-                        Container(width = childrenWidthDp, height = childrenHeightDp) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[0] = coordinates.size
-                                childPosition[0] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-
-                    flexible(flex = 2f) {
-                        Container(width = (childrenWidthDp * 2), height = childrenHeightDp) {
-                            OnPositioned(onPositioned = { coordinates ->
-                                childSize[1] = coordinates.size
-                                childPosition[1] = coordinates.localToGlobal(PxPosition(0.px, 0.px))
-                                drawLatch.countDown()
-                            })
-                        }
-                    }
-                }
-            }
-        }
-        drawLatch.await(1, TimeUnit.SECONDS)
-
-        val root = findAndroidComposeView()
-        waitForDraw(root)
-
-        assertEquals(PxSize(childrenWidth.toPx(), childrenHeight.toPx()), childSize[0])
-        assertEquals(
-            PxSize((childrenWidthDp.toPx() * 2).round(), childrenHeight),
-            childSize[1]
-        )
-        assertEquals(PxPosition(0.px, 0.px), childPosition[0])
-        assertEquals(PxPosition(0.px, childrenHeight.toPx()), childPosition[1])
-    }
     // endregion
 
     // region Cross axis alignment tests in Row
@@ -1246,7 +1042,7 @@
 
     @Test @Ignore("Wrap is not supported when there are flexible children. " +
             "Should use maxWidth(.Infinity) modifier when it is available")
-    fun testFlexRow_withMinMainAxisSize() = withDensity(density) {
+    fun testRow_withMinMainAxisSize() = withDensity(density) {
         val sizeDp = 50.dp
         val size = sizeDp.toIntPx()
         val rowWidthDp = 250.dp
@@ -1259,21 +1055,17 @@
             Center {
                 ConstrainedBox(constraints = DpConstraints(minWidth = rowWidthDp)) {
                     // TODO: add maxWidth(IntPx.Infinity) modifier
-                    FlexRow {
-                        expanded(flex = 1f) {
-                            Container(width = sizeDp, height = sizeDp) {
-                                OnPositioned(onPositioned = { coordinates ->
-                                    expandedChildSize = coordinates.size
-                                    drawLatch.countDown()
-                                })
-                            }
-                        }
-                        inflexible {
+                    Row {
+                        Container(modifier = LayoutFlexible(1f), width = sizeDp, height = sizeDp) {
                             OnPositioned(onPositioned = { coordinates ->
-                                rowSize = coordinates.size
+                                expandedChildSize = coordinates.size
                                 drawLatch.countDown()
                             })
                         }
+                        OnPositioned(onPositioned = { coordinates ->
+                            rowSize = coordinates.size
+                            drawLatch.countDown()
+                        })
                     }
                 }
             }
@@ -1694,7 +1486,7 @@
 
     @Test @Ignore("Wrap is not supported when there are flexible children. " +
             "Should use maxHeight(IntPx.Infinity) modifier when it is available")
-    fun testFlexColumn_withMinMainAxisSize() = withDensity(density) {
+    fun testColumn_withMinMainAxisSize() = withDensity(density) {
         val sizeDp = 50.dp
         val size = sizeDp.toIntPx()
         val columnHeightDp = 250.dp
@@ -1707,21 +1499,17 @@
             Center {
                 ConstrainedBox(constraints = DpConstraints(minHeight = columnHeightDp)) {
                     // TODO: add maxHeight(IntPx.Infinity) modifier
-                    FlexColumn {
-                        expanded(flex = 1f) {
-                            Container(width = sizeDp, height = sizeDp) {
-                                OnPositioned(onPositioned = { coordinates ->
-                                    expandedChildSize = coordinates.size
-                                    drawLatch.countDown()
-                                })
-                            }
-                        }
-                        inflexible {
+                    Column(LayoutMaxHeight(Dp.Infinity)) {
+                        Container(LayoutFlexible(1f), width = sizeDp, height = sizeDp) {
                             OnPositioned(onPositioned = { coordinates ->
-                                columnSize = coordinates.size
+                                expandedChildSize = coordinates.size
                                 drawLatch.countDown()
                             })
                         }
+                        OnPositioned(onPositioned = { coordinates ->
+                            columnSize = coordinates.size
+                            drawLatch.countDown()
+                        })
                     }
                 }
             }
@@ -2930,418 +2718,6 @@
             )
         }
     }
-
-    @Test
-    fun testFlexRow_hasCorrectIntrinsicMeasurements() = withDensity(density) {
-        testIntrinsics(@Composable {
-            FlexRow {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(2f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexRow(mainAxisAlignment = MainAxisAlignment.Start) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(2f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexRow(
-                mainAxisAlignment = MainAxisAlignment.Center,
-                crossAxisAlignment = CrossAxisAlignment.Center
-            ) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(2f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexRow(
-                mainAxisAlignment = MainAxisAlignment.End,
-                crossAxisAlignment = CrossAxisAlignment.End
-            ) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(2f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexRow(
-                mainAxisAlignment = MainAxisAlignment.SpaceAround,
-                crossAxisAlignment = CrossAxisAlignment.Stretch
-            ) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(2f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexRow(mainAxisAlignment = MainAxisAlignment.SpaceBetween) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(2f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexRow(mainAxisAlignment = MainAxisAlignment.SpaceEvenly) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 40.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(2f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(20.dp, 30.dp)) { }
-                }
-            }
-        }) { minIntrinsicWidth, minIntrinsicHeight, maxIntrinsicWidth, maxIntrinsicHeight ->
-            // Min width.
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicWidth(0.ipx)
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicWidth(10.dp.toIntPx())
-            )
-            assertEquals(
-                25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicWidth(25.dp.toIntPx())
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicWidth(IntPx.Infinity)
-            )
-            // Min height.
-            assertEquals(40.dp.toIntPx(), minIntrinsicHeight(0.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), minIntrinsicHeight(125.dp.toIntPx()))
-            assertEquals(50.dp.toIntPx(), minIntrinsicHeight(370.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), minIntrinsicHeight(IntPx.Infinity))
-            // Max width.
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicWidth(0.ipx)
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicWidth(10.dp.toIntPx())
-            )
-            assertEquals(
-                25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicWidth(25.dp.toIntPx())
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicWidth(IntPx.Infinity)
-            )
-            // Max height.
-            assertEquals(40.dp.toIntPx(), maxIntrinsicHeight(0.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), maxIntrinsicHeight(125.dp.toIntPx()))
-            assertEquals(50.dp.toIntPx(), maxIntrinsicHeight(370.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), maxIntrinsicHeight(IntPx.Infinity))
-        }
-    }
-
-    @Test
-    fun testFlexColumn_hasCorrectIntrinsicMeasurements() = withDensity(density) {
-        testIntrinsics(@Composable {
-            FlexColumn {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(0.5f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexColumn(mainAxisAlignment = MainAxisAlignment.Start) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(0.5f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexColumn(
-                mainAxisAlignment = MainAxisAlignment.Center,
-                crossAxisAlignment = CrossAxisAlignment.Center
-            ) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(0.5f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexColumn(
-                mainAxisAlignment = MainAxisAlignment.End,
-                crossAxisAlignment = CrossAxisAlignment.End
-            ) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(0.5f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexColumn(
-                mainAxisAlignment = MainAxisAlignment.SpaceAround,
-                crossAxisAlignment = CrossAxisAlignment.Stretch
-            ) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(0.5f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexColumn(mainAxisAlignment = MainAxisAlignment.SpaceBetween) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(0.5f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-            }
-        }, @Composable {
-            FlexColumn(mainAxisAlignment = MainAxisAlignment.SpaceEvenly) {
-                expanded(flex = 3f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    ConstrainedBox(DpConstraints.tightConstraints(40.dp, 30.dp)) { }
-                }
-                expanded(flex = 2f) {
-                    Container(LayoutAspectRatio(0.5f)) { }
-                }
-                inflexible {
-                    ConstrainedBox(DpConstraints.tightConstraints(30.dp, 20.dp)) { }
-                }
-            }
-        }) { minIntrinsicWidth, minIntrinsicHeight, maxIntrinsicWidth, maxIntrinsicHeight ->
-            // Min width.
-            assertEquals(40.dp.toIntPx(), minIntrinsicWidth(0.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), minIntrinsicWidth(125.dp.toIntPx()))
-            assertEquals(50.dp.toIntPx(), minIntrinsicWidth(370.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), minIntrinsicWidth(IntPx.Infinity))
-            // Min height.
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicHeight(0.ipx)
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicHeight(10.dp.toIntPx())
-            )
-            assertEquals(
-                25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicHeight(25.dp.toIntPx())
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                minIntrinsicHeight(IntPx.Infinity)
-            )
-            // Max width.
-            assertEquals(40.dp.toIntPx(), maxIntrinsicWidth(0.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), maxIntrinsicWidth(125.dp.toIntPx()))
-            assertEquals(50.dp.toIntPx(), maxIntrinsicWidth(370.dp.toIntPx()))
-            assertEquals(40.dp.toIntPx(), maxIntrinsicWidth(IntPx.Infinity))
-            // Max height.
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicHeight(0.ipx)
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicHeight(10.dp.toIntPx())
-            )
-            assertEquals(
-                25.dp.toIntPx() * 2 / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicHeight(25.dp.toIntPx())
-            )
-            assertEquals(
-                30.dp.toIntPx() / 2 * 7 + 20.dp.toIntPx(),
-                maxIntrinsicHeight(IntPx.Infinity)
-            )
-        }
-    }
-
-    @Test
-    fun testFlexRow_alignmentUsingAlignmentKey() = withDensity(density) {
-        val TestAlignmentLine = HorizontalAlignmentLine(::min)
-        val rowSize = Ref<PxSize>()
-        val childPosition = arrayOf<Ref<PxPosition>>(Ref(), Ref(), Ref())
-        val layoutLatch = CountDownLatch(4)
-        show {
-            Wrap {
-                FlexRow(crossAxisAlignment = CrossAxisAlignment.AlignmentLine(TestAlignmentLine)) {
-                    inflexible {
-                        SaveLayoutInfo(rowSize, Ref(), layoutLatch)
-                        OnChildPositioned({ coordinates ->
-                            childPosition[0].value = coordinates.localToGlobal(PxPosition.Origin)
-                            layoutLatch.countDown()
-                        }) {
-                            FixedSizeLayout(10.ipx, 30.ipx, mapOf(TestAlignmentLine to 10.ipx))
-                        }
-                        OnChildPositioned({ coordinates ->
-                            childPosition[1].value = coordinates.localToGlobal(PxPosition.Origin)
-                            layoutLatch.countDown()
-                        }) {
-                            FixedSizeLayout(10.ipx, 10.ipx, mapOf())
-                        }
-                        OnChildPositioned({ coordinates ->
-                            childPosition[2].value = coordinates.localToGlobal(PxPosition.Origin)
-                            layoutLatch.countDown()
-                        }) {
-                            FixedSizeLayout(10.ipx, 30.ipx, mapOf(TestAlignmentLine to 20.ipx))
-                        }
-                    }
-                }
-            }
-        }
-        assertTrue(layoutLatch.await(1, TimeUnit.SECONDS))
-
-        assertEquals(PxSize(30.ipx, 40.ipx), rowSize.value)
-        assertEquals(PxPosition(0.ipx, 10.ipx), childPosition[0].value)
-        assertEquals(PxPosition(10.ipx, 0.ipx), childPosition[1].value)
-        assertEquals(PxPosition(20.ipx, 0.ipx), childPosition[2].value)
-    }
-
-    @Test
-    fun testFlexColumn_alignmentUsingAlignmentKey() = withDensity(density) {
-        val TestAlignmentLine = VerticalAlignmentLine(::min)
-        val columnSize = Ref<PxSize>()
-        val childPosition = arrayOf<Ref<PxPosition>>(Ref(), Ref(), Ref())
-        val layoutLatch = CountDownLatch(4)
-        show {
-            Wrap {
-                FlexColumn(
-                    crossAxisAlignment = CrossAxisAlignment.AlignmentLine(TestAlignmentLine)
-                ) {
-                    inflexible {
-                        SaveLayoutInfo(columnSize, Ref(), layoutLatch)
-                        OnChildPositioned({ coordinates ->
-                            childPosition[0].value = coordinates.localToGlobal(PxPosition.Origin)
-                            layoutLatch.countDown()
-                        }) {
-                            FixedSizeLayout(30.ipx, 10.ipx, mapOf(TestAlignmentLine to 10.ipx))
-                        }
-                        OnChildPositioned({ coordinates ->
-                            childPosition[1].value = coordinates.localToGlobal(PxPosition.Origin)
-                            layoutLatch.countDown()
-                        }) {
-                            FixedSizeLayout(10.ipx, 10.ipx, mapOf())
-                        }
-                        OnChildPositioned({ coordinates ->
-                            childPosition[2].value = coordinates.localToGlobal(PxPosition.Origin)
-                            layoutLatch.countDown()
-                        }) {
-                            FixedSizeLayout(30.ipx, 10.ipx, mapOf(TestAlignmentLine to 20.ipx))
-                        }
-                    }
-                }
-            }
-        }
-        assertTrue(layoutLatch.await(1, TimeUnit.SECONDS))
-
-        assertEquals(PxSize(40.ipx, 30.ipx), columnSize.value)
-        assertEquals(PxPosition(10.ipx, 0.ipx), childPosition[0].value)
-        assertEquals(PxPosition(0.ipx, 10.ipx), childPosition[1].value)
-        assertEquals(PxPosition(0.ipx, 20.ipx), childPosition[2].value)
-    }
     // endregion
 
     // region Modifiers specific tests
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
index 77d4155..870f468 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Flex.kt
@@ -92,9 +92,6 @@
  * entire width assigned by the parent
  * - [flexible] similar to [expanded], but the child can leave unoccupied width.
  *
- * Example usage:
- *
- * @sample androidx.ui.layout.samples.SimpleFlexRow
  *
  * @param mainAxisAlignment The alignment of the layout's children in main axis direction.
  * Default is [MainAxisAlignment.Start].
@@ -103,6 +100,11 @@
  * @param crossAxisSize The size of the layout in the cross axis dimension.
  * Default is [LayoutSize.Wrap].
  */
+@Deprecated(
+    "Use Row layout instead.",
+    ReplaceWith("Row"),
+    DeprecationLevel.WARNING
+)
 @Composable
 fun FlexRow(
     modifier: Modifier = Modifier.None,
@@ -133,10 +135,6 @@
  * to occupy the entire height assigned by the parent
  * - [flexible] similar to [expanded], but the child can leave unoccupied height.
  *
- * Example usage:
- *
- * @sample androidx.ui.layout.samples.SimpleFlexColumn
- *
  * @param mainAxisAlignment The alignment of the layout's children in main axis direction.
  * Default is [MainAxisAlignment.Start].
  * @param crossAxisAlignment The alignment of the layout's children in cross axis direction.
@@ -144,6 +142,11 @@
  * @param crossAxisSize The size of the layout in the cross axis dimension.
  * Default is [LayoutSize.Wrap].
  */
+@Deprecated(
+    "Use Column layout instead.",
+    ReplaceWith("Column"),
+    DeprecationLevel.WARNING
+)
 @Composable
 fun FlexColumn(
     modifier: Modifier = Modifier.None,
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
index 28a9008..b514735 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Flow.kt
@@ -29,7 +29,7 @@
 import androidx.ui.core.max
 
 /**
- * A composable that places its children in a horizontal flow. Unlike [Row] or [FlexRow], if the
+ * A composable that places its children in a horizontal flow. Unlike [Row], if the
  * horizontal space is too small to put all the children in one row, multiple rows may be used.
  *
  * Note that just like [Row], flex values cannot be used with [FlowRow].
@@ -68,7 +68,7 @@
 }
 
 /**
- * A composable that places its children in a vertical flow. Unlike [Column] or [FlexColumn], if the
+ * A composable that places its children in a vertical flow. Unlike [Column], if the
  * vertical space is too small to put all the children in one column, multiple columns may be used.
  *
  * Note that just like [Column], flex values cannot be used with [FlowColumn].
diff --git a/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt b/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
index bcdcc16..a97a221 100644
--- a/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
+++ b/ui/ui-layout/src/main/java/androidx/ui/layout/Intrinsic.kt
@@ -78,10 +78,10 @@
  * The sample builds a layout containing two pieces of text separated by a divider, where the
  * divider is sized according to the height of the longest text.
  *
- * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
+ * Here [MinIntrinsicHeight] is adding a speculative height measurement pass for the [Row],
  * whose minimum intrinsic height will correspond to the height of the largest [Text]. Then
- * [MinIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * minimum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [Text]s and
+ * [MinIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * minimum intrinsic height, which due to [LayoutExpandedHeight] will force the [Text]s and
  * the divider to use the same height.
  */
 @Composable
@@ -125,8 +125,8 @@
  * Here [MaxIntrinsicWidth] is adding a speculative width measurement pass for the [Column],
  * whose maximum intrinsic width will correspond to the preferred width of the largest
  * [ConstrainedBox]. Then [MaxIntrinsicWidth] will measure the [Column] with tight width, the same
- * as the premeasured maximum intrinsic width, which due to [CrossAxisAlignment.Stretch] will force
- * the [ConstrainedBox]s to use the same width.
+ * as the premeasured maximum intrinsic width, which due to [LayoutExpandedWidth] will force
+ * the [Container]s to use the same width.
  * The sample is a layout containing three composables having the same width as the widest one.
  */
 @Composable
@@ -168,10 +168,10 @@
  * The sample builds a layout containing two [LayoutAspectRatio]s separated by a divider, where the
  * divider is sized according to the height of the taller [LayoutAspectRatio].
  *
- * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [FlexRow],
- * whose maximum intrinsic height will correspond to the height of the taller [LayoutAspectRatio]. Then
- * [MaxIntrinsicHeight] will measure the [FlexRow] with tight height, the same as the premeasured
- * maximum intrinsic height, which due to [CrossAxisAlignment.Stretch] will force the [LayoutAspectRatio]s
+ * Here [MaxIntrinsicHeight] is adding a speculative height measurement pass for the [Row],
+ * whose maximum intrinsic height will correspond to the height of the taller [AspectRatio]. Then
+ * [MaxIntrinsicHeight] will measure the [Row] with tight height, the same as the premeasured
+ * maximum intrinsic height, which due to [LayoutExpandedHeight] will force the [AspectRatio]s
  * and the divider to use the same height.
  */
 @Composable
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 0ccf58b..af36a37 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
@@ -26,8 +26,6 @@
 import androidx.ui.layout.Arrangement
 import androidx.ui.layout.Column
 import androidx.ui.layout.Container
-import androidx.ui.layout.LayoutExpandedHeight
-import androidx.ui.layout.FlexColumn
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.RadioGroup
 import androidx.ui.material.demos.AppBarActivity.BottomAppBarOption.CenterFab
@@ -76,64 +74,58 @@
         var selectedTopAppBar by +state { Simple }
         var selectedBottomAppBar by +state { NoFab }
 
-        FlexColumn {
-            inflexible {
-                Container(height = 120.dp, alignment = Alignment.TopCenter) {
-                    when (selectedTopAppBar) {
-                        Simple -> SimpleTopAppBarNavIcon(navigationImage)
-                        Actions -> SimpleTopAppBarNavIconWithActions(
-                            favouriteImage,
-                            navigationImage
+        Column {
+            Container(height = 120.dp, alignment = Alignment.TopCenter) {
+                when (selectedTopAppBar) {
+                    Simple -> SimpleTopAppBarNavIcon(navigationImage)
+                    Actions -> SimpleTopAppBarNavIconWithActions(
+                        favouriteImage,
+                        navigationImage
+                    )
+                }
+            }
+            Column(LayoutFlexible(1f), arrangement = Arrangement.SpaceBetween) {
+                DemoText("TopAppBar options")
+                RadioGroup {
+                    topAppBarOptions.forEach { topAppBar ->
+                        RadioGroupTextItem(
+                            selected = (topAppBar == selectedTopAppBar),
+                            onSelect = { selectedTopAppBar = topAppBar },
+                            text = topAppBar.description
+                        )
+                    }
+                }
+                DemoText("BottomAppBar options")
+                RadioGroup {
+                    bottomAppBarOptions.forEach { bottomAppBar ->
+                        RadioGroupTextItem(
+                            selected = (bottomAppBar == selectedBottomAppBar),
+                            onSelect = { selectedBottomAppBar = bottomAppBar },
+                            text = bottomAppBar.description
                         )
                     }
                 }
             }
-            flexible(1f) {
-                Column(LayoutExpandedHeight, arrangement = Arrangement.SpaceBetween) {
-                    DemoText("TopAppBar options")
-                    RadioGroup {
-                        topAppBarOptions.forEach { topAppBar ->
-                            RadioGroupTextItem(
-                                selected = (topAppBar == selectedTopAppBar),
-                                onSelect = { selectedTopAppBar = topAppBar },
-                                text = topAppBar.description
-                            )
-                        }
-                    }
-                    DemoText("BottomAppBar options")
-                    RadioGroup {
-                        bottomAppBarOptions.forEach { bottomAppBar ->
-                            RadioGroupTextItem(
-                                selected = (bottomAppBar == selectedBottomAppBar),
-                                onSelect = { selectedBottomAppBar = bottomAppBar },
-                                text = bottomAppBar.description
-                            )
-                        }
-                    }
-                }
-            }
-            inflexible {
-                Container(height = 120.dp, alignment = Alignment.BottomCenter) {
-                    when (selectedBottomAppBar) {
-                        NoFab -> SimpleBottomAppBarNoFab(favouriteImage, navigationImage)
-                        CenterFab -> SimpleBottomAppBarCenterFab(
-                            favouriteImage,
-                            navigationImage
-                        )
-                        EndFab -> SimpleBottomAppBarEndFab(favouriteImage)
-                        CutoutFab -> SimpleBottomAppBarCutoutFab(
-                            favouriteImage,
-                            navigationImage
-                        )
-                        ExtendedCutoutFab -> SimpleBottomAppBarExtendedCutoutFab(
-                            favouriteImage,
-                            navigationImage
-                        )
-                        FancyAnimatingCutoutFab -> SimpleBottomAppBarFancyAnimatingCutoutFab(
-                            favouriteImage,
-                            navigationImage
-                        )
-                    }
+            Container(height = 120.dp, alignment = Alignment.BottomCenter) {
+                when (selectedBottomAppBar) {
+                    NoFab -> SimpleBottomAppBarNoFab(favouriteImage, navigationImage)
+                    CenterFab -> SimpleBottomAppBarCenterFab(
+                        favouriteImage,
+                        navigationImage
+                    )
+                    EndFab -> SimpleBottomAppBarEndFab(favouriteImage)
+                    CutoutFab -> SimpleBottomAppBarCutoutFab(
+                        favouriteImage,
+                        navigationImage
+                    )
+                    ExtendedCutoutFab -> SimpleBottomAppBarExtendedCutoutFab(
+                        favouriteImage,
+                        navigationImage
+                    )
+                    FancyAnimatingCutoutFab -> SimpleBottomAppBarFancyAnimatingCutoutFab(
+                        favouriteImage,
+                        navigationImage
+                    )
                 }
             }
         }
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 53ab4b0..0631f5b4 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
@@ -38,7 +38,6 @@
 import androidx.ui.layout.Container
 import androidx.ui.layout.LayoutExpanded
 import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexColumn
 import androidx.ui.layout.LayoutGravity
 import androidx.ui.layout.LayoutHeight
 import androidx.ui.layout.Spacer
@@ -92,16 +91,12 @@
 @Composable
 private fun DynamicThemeApp(scrollFraction: ScrollFraction, palette: ColorPalette) {
     MaterialTheme(palette) {
-        Stack(LayoutExpanded) {
-            FlexColumn(LayoutExpanded) {
-                inflexible {
-                    TopBar()
-                }
-                expanded(1f) {
-                    val background = (+MaterialTheme.colors()).background
-                    Surface(color = background) {
-                        ScrollingContent(scrollFraction)
-                    }
+        Stack {
+            Column(LayoutExpanded) {
+                TopBar()
+                val background = (+MaterialTheme.colors()).background
+                Surface(color = background, modifier = LayoutFlexible(1f)) {
+                    ScrollingContent(scrollFraction)
                 }
             }
             Container(LayoutGravity.BottomCenter) {
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt
index bf435bd..27fa063 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeActivity.kt
@@ -17,8 +17,9 @@
 package androidx.ui.material.demos
 
 import androidx.compose.Composable
-import androidx.ui.layout.Center
-import androidx.ui.layout.FlexColumn
+import androidx.ui.layout.Arrangement
+import androidx.ui.layout.Column
+import androidx.ui.layout.LayoutExpandedHeight
 import androidx.ui.material.samples.MaterialThemeSample
 import androidx.ui.material.samples.ThemeColorSample
 import androidx.ui.material.samples.ThemeTextStyleSample
@@ -26,18 +27,10 @@
 class MaterialThemeActivity : MaterialDemoActivity() {
     @Composable
     override fun materialContent() {
-        FlexColumn {
-            expanded(1f) {
-                Center {
-                    MaterialThemeSample()
-                }
-                Center {
-                    ThemeColorSample()
-                }
-                Center {
-                    ThemeTextStyleSample()
-                }
-            }
+        Column(modifier = LayoutExpandedHeight, arrangement = Arrangement.SpaceAround) {
+            MaterialThemeSample()
+            ThemeTextStyleSample()
+            ThemeColorSample()
         }
     }
 }
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt
index f7e5928..826cb1d 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorActivity.kt
@@ -25,8 +25,8 @@
 import androidx.ui.graphics.Color
 import androidx.ui.layout.Arrangement
 import androidx.ui.layout.LayoutExpandedWidth
-import androidx.ui.layout.FlexColumn
-import androidx.ui.layout.MainAxisAlignment
+import androidx.ui.layout.Column
+import androidx.ui.layout.LayoutGravity
 import androidx.ui.layout.Row
 import androidx.ui.material.CircularProgressIndicator
 import androidx.ui.material.LinearProgressIndicator
@@ -85,26 +85,25 @@
     +onActive { state.start() }
     +onDispose { state.stop() }
 
-    FlexColumn(mainAxisAlignment = MainAxisAlignment.Center) {
-        expanded(flex = 1f) {
-            Row(LayoutExpandedWidth, arrangement = Arrangement.SpaceEvenly) {
-                // Determinate indicators
-                LinearProgressIndicator(progress = state.progress)
-                CircularProgressIndicator(progress = state.progress)
-            }
-            Row(LayoutExpandedWidth, arrangement = Arrangement.SpaceEvenly) {
-                // Fancy colours!
-                LinearProgressIndicator(progress = (state.progress), color = state.generateColor())
-                CircularProgressIndicator(
-                    progress = (state.progress),
-                    color = state.generateColor()
-                )
-            }
-            Row(LayoutExpandedWidth, arrangement = Arrangement.SpaceEvenly) {
-                // Indeterminate indicators
-                LinearProgressIndicator()
-                CircularProgressIndicator()
-            }
+    Column {
+        val modifier = LayoutFlexible(1f) + LayoutGravity.Center + LayoutExpandedWidth
+        Row(modifier = modifier, arrangement = Arrangement.SpaceEvenly) {
+            // Determinate indicators
+            LinearProgressIndicator(progress = state.progress)
+            CircularProgressIndicator(progress = state.progress)
+        }
+        Row(modifier = modifier, arrangement = Arrangement.SpaceEvenly) {
+            // Fancy colours!
+            LinearProgressIndicator(progress = (state.progress), color = state.generateColor())
+            CircularProgressIndicator(
+                progress = (state.progress),
+                color = state.generateColor()
+            )
+        }
+        Row(modifier = modifier, arrangement = Arrangement.SpaceEvenly) {
+            // Indeterminate indicators
+            LinearProgressIndicator()
+            CircularProgressIndicator()
         }
     }
 }
\ No newline at end of file
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt
index fb11264..2aa229a 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabActivity.kt
@@ -19,9 +19,8 @@
 import androidx.compose.Composable
 import androidx.compose.state
 import androidx.compose.unaryPlus
+import androidx.ui.core.dp
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Center
-import androidx.ui.layout.FlexColumn
 import androidx.ui.material.Button
 import androidx.ui.material.ContainedButtonStyle
 import androidx.ui.material.samples.FancyIndicatorContainerTabs
@@ -33,40 +32,42 @@
 import androidx.ui.material.samples.TextAndIconTabs
 import androidx.ui.material.samples.TextTabs
 import androidx.ui.graphics.imageFromResource
+import androidx.ui.layout.Arrangement
+import androidx.ui.layout.Column
+import androidx.ui.layout.LayoutExpandedHeight
+import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutHeight
+import androidx.ui.layout.Spacer
 
 class TabActivity : MaterialDemoActivity() {
 
     @Composable
     override fun materialContent() {
         val favouriteImage = imageFromResource(resources, R.drawable.ic_favorite)
-        FlexColumn {
+        Column(modifier = LayoutExpandedHeight, arrangement = Arrangement.SpaceBetween) {
             val showingSimple = +state { true }
             val buttonText = "Show ${if (showingSimple.value) "custom" else "simple"} tabs"
 
-            expanded(flex = 1f) {
-                if (showingSimple.value) {
-                    TextTabs()
-                    IconTabs(favouriteImage)
-                    TextAndIconTabs(favouriteImage)
-                    ScrollingTextTabs()
-                } else {
-                    FancyTabs()
-                    FancyIndicatorTabs()
-                    FancyIndicatorContainerTabs()
-                    ScrollingFancyIndicatorContainerTabs()
-                }
+            if (showingSimple.value) {
+                TextTabs()
+                IconTabs(favouriteImage)
+                TextAndIconTabs(favouriteImage)
+                ScrollingTextTabs()
+            } else {
+                FancyTabs()
+                FancyIndicatorTabs()
+                FancyIndicatorContainerTabs()
+                ScrollingFancyIndicatorContainerTabs()
             }
-
-            expanded(flex = 1f) {
-                Center {
-                    Button(
-                        style = ContainedButtonStyle(color = Color.Cyan),
-                        text = buttonText,
-                        onClick = {
-                            showingSimple.value = !showingSimple.value
-                        })
+            Button(
+                modifier = LayoutGravity.Center,
+                style = ContainedButtonStyle(color = Color.Cyan),
+                text = buttonText,
+                onClick = {
+                    showingSimple.value = !showingSimple.value
                 }
-            }
+            )
+            Spacer(LayoutHeight(50.dp))
         }
     }
 }
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt
index dded9a9..554d204 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/MissingMaterialComponents.kt
@@ -16,10 +16,10 @@
 
 package androidx.ui.material.studies
 
-import androidx.ui.layout.FlexColumn
 import androidx.ui.material.surface.Surface
 import androidx.compose.Composable
 import androidx.compose.unaryPlus
+import androidx.ui.layout.Column
 import androidx.ui.material.MaterialTheme
 
 /**
@@ -30,14 +30,10 @@
 
 @Composable
 fun Scaffold(appBar: @Composable() () -> Unit, children: @Composable() () -> Unit) {
-    FlexColumn {
-        inflexible {
-            appBar()
-        }
-        expanded(flex = 1.0f) {
-            Surface(color = (+MaterialTheme.colors()).surface) {
-                children()
-            }
+    Column {
+        appBar()
+        Surface(modifier = LayoutFlexible(1f), color = (+MaterialTheme.colors()).surface) {
+            children()
         }
     }
 }
\ No newline at end of file
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 f83a4f7..06afe90 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
@@ -28,12 +28,10 @@
 import androidx.ui.layout.Arrangement
 import androidx.ui.layout.Column
 import androidx.ui.layout.Container
-import androidx.ui.layout.FlexRow
 import androidx.ui.layout.LayoutExpandedWidth
 import androidx.ui.layout.LayoutGravity
 import androidx.ui.layout.LayoutHeight
 import androidx.ui.layout.LayoutPadding
-import androidx.ui.layout.LayoutSize
 import androidx.ui.layout.LayoutWidth
 import androidx.ui.layout.Row
 import androidx.ui.layout.Spacer
@@ -212,21 +210,15 @@
  */
 @Composable
 fun RallyAccountRow(name: String, number: String, amount: String, color: Color) {
-    FlexRow(LayoutPadding(top = 12.dp, bottom = 12.dp)) {
-        inflexible {
-            AccountIndicator(color = color)
-            Spacer(LayoutWidth(8.dp))
-            Column {
-                Text(text = name, style = (+MaterialTheme.typography()).body1)
-                Text(text = "•••••$number", style = (+MaterialTheme.typography()).subtitle1)
-            }
+    Row(LayoutPadding(top = 12.dp, bottom = 12.dp)) {
+        AccountIndicator(color = color)
+        Spacer(LayoutWidth(8.dp))
+        Column {
+            Text(text = name, style = (+MaterialTheme.typography()).body1)
+            Text(text = "•••••$number", style = (+MaterialTheme.typography()).subtitle1)
         }
-        expanded(flex = 1.0f) {
-            Spacer(LayoutSize(width = 0.dp, height = 0.dp))
-        }
-        inflexible {
-            Text(text = "$ $amount", style = (+MaterialTheme.typography()).h6)
-        }
+        Spacer(LayoutFlexible(1f))
+        Text(text = "$ $amount", style = (+MaterialTheme.typography()).h6)
     }
 }
 
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 ef95fd8..0ddd417 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
@@ -37,11 +37,9 @@
 import androidx.ui.foundation.shape.border.DrawBorder
 import androidx.ui.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Center
 import androidx.ui.layout.Column
 import androidx.ui.layout.Container
 import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.FlexColumn
 import androidx.ui.layout.Padding
 import androidx.ui.material.Tab
 import androidx.ui.material.TabRow
@@ -55,20 +53,15 @@
 fun TextTabs() {
     val state = +state { 0 }
     val titles = listOf("TAB 1", "TAB 2", "TAB 3 WITH LOTS OF TEXT")
-    FlexColumn {
-        inflexible {
-            TabRow(items = titles, selectedIndex = state.value) { index, text ->
-                Tab(text = text, selected = state.value == index) { state.value = index }
-            }
+    Column {
+        TabRow(items = titles, selectedIndex = state.value) { index, text ->
+            Tab(text = text, selected = state.value == index) { state.value = index }
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Text tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Text tab ${state.value + 1} selected",
+            style = (+MaterialTheme.typography()).body1
+        )
     }
 }
 
@@ -76,20 +69,15 @@
 fun IconTabs(image: Image) {
     val state = +state { 0 }
     val icons = listOf(image, image, image)
-    FlexColumn {
-        inflexible {
-            TabRow(items = icons, selectedIndex = state.value) { index, icon ->
-                Tab(icon = icon, selected = state.value == index) { state.value = index }
-            }
+    Column {
+        TabRow(items = icons, selectedIndex = state.value) { index, icon ->
+            Tab(icon = icon, selected = state.value == index) { state.value = index }
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Icon tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Icon tab ${state.value + 1} selected",
+            style = (+MaterialTheme.typography()).body1
+        )
     }
 }
 
@@ -99,23 +87,18 @@
     val state = +state { 0 }
     val titlesAndIcons =
         listOf("TAB 1" to image, "TAB 2" to image, "TAB 3 WITH LOTS OF TEXT" to image)
-    FlexColumn {
-        inflexible {
-            TabRow(items = titlesAndIcons, selectedIndex = state.value) { index, data ->
-                val (title, icon) = data
-                Tab(text = title, icon = icon, selected = state.value == index) {
-                    state.value = index
-                }
+    Column {
+        TabRow(items = titlesAndIcons, selectedIndex = state.value) { index, data ->
+            val (title, icon) = data
+            Tab(text = title, icon = icon, selected = state.value == index) {
+                state.value = index
             }
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Text and icon tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Text and icon tab ${state.value + 1} selected",
+            style = (+MaterialTheme.typography()).body1
+        )
     }
 }
 
@@ -134,20 +117,15 @@
         "TAB 9 WITH LOTS OF TEXT",
         "TAB 10"
     )
-    FlexColumn {
-        inflexible {
-            TabRow(items = titles, selectedIndex = state.value, scrollable = true) { index, text ->
-                Tab(text = text, selected = state.value == index) { state.value = index }
-            }
+    Column {
+        TabRow(items = titles, selectedIndex = state.value, scrollable = true) { index, text ->
+            Tab(text = text, selected = state.value == index) { state.value = index }
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Scrolling text tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Scrolling text tab ${state.value + 1} selected",
+            style = (+MaterialTheme.typography()).body1
+        )
     }
 }
 
@@ -156,24 +134,19 @@
 fun FancyTabs() {
     val state = +state { 0 }
     val titles = listOf("TAB 1", "TAB 2", "TAB 3")
-    FlexColumn {
-        inflexible {
-            TabRow(items = titles, selectedIndex = state.value) { index, title ->
-                FancyTab(
-                    title = title,
-                    onClick = { state.value = index },
-                    selected = (index == state.value)
-                )
-            }
+    Column {
+        TabRow(items = titles, selectedIndex = state.value) { index, title ->
+            FancyTab(
+                title = title,
+                onClick = { state.value = index },
+                selected = (index == state.value)
+            )
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Fancy tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Fancy tab ${state.value + 1} selected",
+            style = (+MaterialTheme.typography()).body1
+        )
     }
 }
 
@@ -190,24 +163,19 @@
         }
     }
 
-    FlexColumn {
-        inflexible {
-            TabRow(
-                items = titles,
-                selectedIndex = state.value,
-                indicatorContainer = indicatorContainer
-            ) { index, text ->
-                Tab(text = text, selected = state.value == index) { state.value = index }
-            }
+    Column {
+        TabRow(
+            items = titles,
+            selectedIndex = state.value,
+            indicatorContainer = indicatorContainer
+        ) { index, text ->
+            Tab(text = text, selected = state.value == index) { state.value = index }
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Fancy indicator tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Fancy indicator tab ${state.value + 1} selected",
+            style = (+MaterialTheme.typography()).body1
+        )
     }
 }
 
@@ -221,24 +189,19 @@
         FancyIndicatorContainer(tabPositions = tabPositions, selectedIndex = state.value)
     }
 
-    FlexColumn {
-        inflexible {
-            TabRow(
-                items = titles,
-                selectedIndex = state.value,
-                indicatorContainer = indicatorContainer
-            ) { index, text ->
-                Tab(text = text, selected = state.value == index) { state.value = index }
-            }
+    Column {
+        TabRow(
+            items = titles,
+            selectedIndex = state.value,
+            indicatorContainer = indicatorContainer
+        ) { index, text ->
+            Tab(text = text, selected = state.value == index) { state.value = index }
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Fancy transition tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Fancy transition tab ${state.value + 1} selected",
+            style = (+MaterialTheme.typography()).body1
+        )
     }
 }
 
@@ -261,25 +224,20 @@
         FancyIndicatorContainer(tabPositions = tabPositions, selectedIndex = state.value)
     }
 
-    FlexColumn {
-        inflexible {
-            TabRow(
-                items = titles,
-                selectedIndex = state.value,
-                indicatorContainer = indicatorContainer,
-                scrollable = true
-            ) { index, text ->
-                Tab(text = text, selected = state.value == index) { state.value = index }
-            }
+    Column {
+        TabRow(
+            items = titles,
+            selectedIndex = state.value,
+            indicatorContainer = indicatorContainer,
+            scrollable = true
+        ) { index, text ->
+            Tab(text = text, selected = state.value == index) { state.value = index }
         }
-        flexible(flex = 1f) {
-            Center {
-                Text(
-                    text = "Scrolling fancy transition tab ${state.value + 1} selected",
-                    style = (+MaterialTheme.typography()).body1
-                )
-            }
-        }
+        Text(
+            modifier = LayoutGravity.Center,
+            text = "Scrolling fancy transition tab ${state.value + 1} selected",
+            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 0b66644..8edd034 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
@@ -24,6 +24,7 @@
 import androidx.ui.foundation.ColoredRect
 import androidx.ui.foundation.isSystemInDarkTheme
 import androidx.ui.graphics.Color
+import androidx.ui.layout.LayoutAspectRatio
 import androidx.ui.material.FloatingActionButton
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Typography
@@ -57,7 +58,10 @@
 
     MaterialTheme(colors = colors, typography = typography) {
         val currentTheme = if ((+MaterialTheme.colors()).isLight) "light" else "dark"
-        FloatingActionButton("FAB with text style and color from $currentTheme theme", onClick = {})
+        FloatingActionButton(
+            "FAB with text style and color from $currentTheme theme",
+            onClick = {}
+        )
     }
 }
 
@@ -65,7 +69,7 @@
 @Composable
 fun ThemeColorSample() {
     val colors = +MaterialTheme.colors()
-    ColoredRect(color = colors.primary)
+    ColoredRect(color = colors.primary, modifier = LayoutAspectRatio(1f))
 }
 
 @Sampled
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 e661377..2144206 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
@@ -44,15 +44,12 @@
 import androidx.ui.foundation.shape.RectangleShape
 import androidx.ui.foundation.shape.corner.CircleShape
 import androidx.ui.layout.Container
-import androidx.ui.layout.FlexRow
-import androidx.ui.layout.MainAxisAlignment
 import androidx.ui.layout.Row
 import androidx.ui.layout.Spacer
 import androidx.ui.layout.LayoutWidth
 import androidx.ui.material.surface.Surface
 import androidx.ui.graphics.Color
 import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.LayoutSize
 import androidx.ui.layout.Wrap
 import androidx.ui.material.BottomAppBar.FabConfiguration
 import androidx.ui.material.BottomAppBar.FabPosition
@@ -60,9 +57,9 @@
 import androidx.ui.graphics.Image
 import androidx.ui.graphics.Path
 import androidx.ui.graphics.PathOperation
-import androidx.ui.layout.Align
 import androidx.ui.layout.AlignmentLineOffset
 import androidx.ui.layout.Arrangement
+import androidx.ui.layout.LayoutAlign
 import androidx.ui.layout.LayoutExpanded
 import androidx.ui.layout.LayoutExpandedHeight
 import androidx.ui.layout.Padding
@@ -150,42 +147,34 @@
     endContent: @Composable() (() -> Unit)?
 ) {
     BaseAppBar(color, TopAppBarElevation, RectangleShape) {
-        FlexRow(
-            mainAxisAlignment = MainAxisAlignment.SpaceBetween,
-            crossAxisSize = LayoutSize.Expand
-        ) {
+        Row(arrangement = Arrangement.SpaceBetween) {
             // We only want to reserve space here if we have some start content
             if (startContent != null) {
-                inflexible {
-                    Container(
-                        modifier = LayoutExpandedHeight,
-                        width = AppBarTitleStartPadding,
-                        alignment = Alignment.CenterLeft,
-                        children = startContent
-                    )
-                }
+                Container(
+                    modifier = LayoutExpandedHeight,
+                    width = AppBarTitleStartPadding,
+                    alignment = Alignment.CenterLeft,
+                    children = startContent
+                )
             }
-            expanded(1f) {
-                Align(Alignment.BottomLeft) {
-                    AlignmentLineOffset(
-                        alignmentLine = LastBaseline,
-                        after = withDensity(+ambientDensity()) { AppBarTitleBaselineOffset.toDp() }
-                    ) {
-                        // TODO: AlignmentLineOffset requires a child, so in case title() is
-                        // empty we just add an empty wrap here - should be fixed when we move to
-                        // modifiers.
-                        Wrap(children = title)
-                    }
+            // TODO(soboleva): rework this once AlignmentLineOffset is a modifier
+            Container(LayoutFlexible(1f) + LayoutAlign.BottomLeft) {
+                AlignmentLineOffset(
+                    alignmentLine = LastBaseline,
+                    after = withDensity(+ambientDensity()) { AppBarTitleBaselineOffset.toDp() }
+                ) {
+                    // TODO: AlignmentLineOffset requires a child, so in case title() is
+                    // empty we just add an empty wrap here - should be fixed when we move to
+                    // modifiers.
+                    Wrap(children = title)
                 }
             }
             if (endContent != null) {
-                inflexible {
-                    Container(
-                        modifier = LayoutExpandedHeight,
-                        alignment = Alignment.Center,
-                        children = endContent
-                    )
-                }
+                Container(
+                    modifier = LayoutExpandedHeight,
+                    alignment = Alignment.Center,
+                    children = endContent
+                )
             }
         }
     }
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 b049f8d..f0342a0 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
@@ -26,6 +26,7 @@
 import androidx.ui.core.IntPxSize
 import androidx.ui.core.LastBaseline
 import androidx.ui.core.Layout
+import androidx.ui.core.Modifier
 import androidx.ui.core.Text
 import androidx.ui.core.dp
 import androidx.ui.core.ipx
@@ -36,11 +37,12 @@
 import androidx.ui.graphics.Image
 import androidx.ui.layout.ConstrainedBox
 import androidx.ui.layout.Container
-import androidx.ui.layout.CrossAxisAlignment
 import androidx.ui.layout.DpConstraints
 import androidx.ui.layout.EdgeInsets
-import androidx.ui.layout.FlexRow
+import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutPadding
 import androidx.ui.layout.Padding
+import androidx.ui.layout.Row
 import androidx.ui.material.ripple.Ripple
 import androidx.ui.text.TextStyle
 import androidx.ui.text.style.TextOverflow
@@ -195,35 +197,36 @@
     ) {
         val minHeight = if (icon == null) MinHeight else MinHeightWithIcon
         ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
-            FlexRow(crossAxisAlignment = CrossAxisAlignment.Center) {
-                inflexible {
-                    if (icon != null) {
-                        Container(
-                            alignment = Alignment.CenterLeft,
-                            constraints = DpConstraints(
-                                minWidth = IconLeftPadding + IconMinPaddedWidth
-                            ),
-                            padding = EdgeInsets(
-                                // TODO(popam): remove left padding for wide icons
-                                left = IconLeftPadding,
-                                top = IconVerticalPadding,
-                                bottom = IconVerticalPadding
-                            ),
-                            children = icon
-                        )
-                    }
+            Row {
+                if (icon != null) {
+                    Container(
+                        modifier = LayoutGravity.Center,
+                        alignment = Alignment.CenterLeft,
+                        constraints = DpConstraints(
+                            minWidth = IconLeftPadding + IconMinPaddedWidth
+                        ),
+                        padding = EdgeInsets(
+                            // TODO(popam): remove left padding for wide icons
+                            left = IconLeftPadding,
+                            top = IconVerticalPadding,
+                            bottom = IconVerticalPadding
+                        ),
+                        children = icon
+                    )
                 }
-                expanded(flex = 1f) {
-                    Padding(left = ContentLeftPadding, right = ContentRightPadding, children = text)
-                }
-                inflexible {
-                    if (trailing != null) {
-                        Container(
-                            alignment = Alignment.Center,
-                            padding = EdgeInsets(right = TrailingRightPadding),
-                            children = trailing
-                        )
-                    }
+                Container(
+                    modifier = LayoutFlexible(1f) + LayoutGravity.Center +
+                            LayoutPadding(left = ContentLeftPadding, right = ContentRightPadding),
+                    alignment = Alignment.CenterLeft,
+                    children = text
+                )
+                if (trailing != null) {
+                    Container(
+                        modifier = LayoutGravity.Center,
+                        alignment = Alignment.Center,
+                        padding = EdgeInsets(right = TrailingRightPadding),
+                        children = trailing
+                    )
                 }
             }
         }
@@ -260,69 +263,69 @@
     ) {
         val minHeight = if (icon == null) MinHeight else MinHeightWithIcon
         ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
-            FlexRow {
-                inflexible {
-                    if (icon != null) {
-                        Container(
-                            alignment = Alignment.TopLeft,
-                            constraints = DpConstraints(
-                                // TODO(popam): remove minHeight with cross axis alignment per child
-                                minHeight = minHeight,
-                                minWidth = IconLeftPadding + IconMinPaddedWidth
-                            ),
-                            padding = EdgeInsets(
-                                left = IconLeftPadding,
-                                top = IconVerticalPadding,
-                                bottom = IconVerticalPadding
-                            ),
-                            children = icon
-                        )
+            Row {
+                val modifier = LayoutFlexible(1f) + LayoutPadding(
+                    left = ContentLeftPadding,
+                    right = ContentRightPadding
+                )
+
+                if (icon != null) {
+                    Container(
+                        alignment = Alignment.TopLeft,
+                        constraints = DpConstraints(
+                            // TODO(popam): remove minHeight with cross axis alignment per child
+                            minHeight = minHeight,
+                            minWidth = IconLeftPadding + IconMinPaddedWidth
+                        ),
+                        padding = EdgeInsets(
+                            left = IconLeftPadding,
+                            top = IconVerticalPadding,
+                            bottom = IconVerticalPadding
+                        ),
+                        children = icon
+                    )
+                }
+
+                if (overlineText != null) {
+                    BaselinesOffsetColumn(
+                        listOf(OverlineBaselineOffset, OverlineToPrimaryBaselineOffset),
+                        modifier
+                    ) {
+                        overlineText()
+                        text()
+                    }
+                } else {
+                    BaselinesOffsetColumn(
+                        listOf(
+                            if (icon != null) {
+                                PrimaryBaselineOffsetWithIcon
+                            } else {
+                                PrimaryBaselineOffsetNoIcon
+                            },
+                            if (icon != null) {
+                                PrimaryToSecondaryBaselineOffsetWithIcon
+                            } else {
+                                PrimaryToSecondaryBaselineOffsetNoIcon
+                            }
+                        ),
+                        modifier
+                    ) {
+                        text()
+                        secondaryText!!()
                     }
                 }
-                expanded(flex = 1f) {
-                    Padding(left = ContentLeftPadding, right = ContentRightPadding) {
-                        if (overlineText != null) {
-                            BaselinesOffsetColumn(
-                                listOf(OverlineBaselineOffset, OverlineToPrimaryBaselineOffset)
-                            ) {
-                                overlineText()
-                                text()
-                            }
-                        } else {
-                            BaselinesOffsetColumn(
-                                listOf(
-                                    if (icon != null) {
-                                        PrimaryBaselineOffsetWithIcon
-                                    } else {
-                                        PrimaryBaselineOffsetNoIcon
-                                    },
-                                    if (icon != null) {
-                                        PrimaryToSecondaryBaselineOffsetWithIcon
-                                    } else {
-                                        PrimaryToSecondaryBaselineOffsetNoIcon
-                                    }
-                                )
-                            ) {
-                                text()
-                                secondaryText!!()
-                            }
-                        }
-                    }
-                }
-                inflexible {
-                    if (trailing != null) {
-                        Padding(right = TrailingRightPadding) {
-                            // TODO(popam): find way to center and wrap content without minHeight
-                            ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
-                                OffsetToBaselineOrCenter(
-                                    if (icon != null) {
-                                        PrimaryBaselineOffsetWithIcon
-                                    } else {
-                                        PrimaryBaselineOffsetNoIcon
-                                    },
-                                    trailing
-                                )
-                            }
+                if (trailing != null) {
+                    Padding(right = TrailingRightPadding) {
+                        // TODO(popam): find way to center and wrap content without minHeight
+                        ConstrainedBox(constraints = DpConstraints(minHeight = minHeight)) {
+                            OffsetToBaselineOrCenter(
+                                if (icon != null) {
+                                    PrimaryBaselineOffsetWithIcon
+                                } else {
+                                    PrimaryBaselineOffsetNoIcon
+                                },
+                                trailing
+                            )
                         }
                     }
                 }
@@ -357,48 +360,42 @@
         trailing: @Composable() (() -> Unit)?
     ) {
         ConstrainedBox(constraints = DpConstraints(minHeight = MinHeight)) {
-            FlexRow {
-                inflexible {
-                    if (icon != null) {
-                        Container(
-                            alignment = Alignment.CenterLeft,
-                            constraints = DpConstraints(
-                                minWidth = IconLeftPadding + IconMinPaddedWidth
-                            ),
-                            padding = EdgeInsets(
-                                left = IconLeftPadding,
-                                top = IconThreeLineVerticalPadding,
-                                bottom = IconThreeLineVerticalPadding
-                            ),
-                            children = icon
+            Row {
+                if (icon != null) {
+                    Container(
+                        alignment = Alignment.CenterLeft,
+                        constraints = DpConstraints(
+                            minWidth = IconLeftPadding + IconMinPaddedWidth
+                        ),
+                        padding = EdgeInsets(
+                            left = IconLeftPadding,
+                            top = IconThreeLineVerticalPadding,
+                            bottom = IconThreeLineVerticalPadding
+                        ),
+                        children = icon
+                    )
+                }
+                BaselinesOffsetColumn(
+                    listOf(
+                        ThreeLineBaselineFirstOffset,
+                        ThreeLineBaselineSecondOffset,
+                        ThreeLineBaselineThirdOffset
+                    ),
+                    LayoutFlexible(1f) +
+                            LayoutPadding(left = ContentLeftPadding, right = ContentRightPadding)
+                ) {
+                    if (overlineText != null) overlineText()
+                    text()
+                    secondaryText()
+                }
+                if (trailing != null) {
+                    Padding(top = ThreeLineTrailingTopPadding, right = TrailingRightPadding) {
+                        OffsetToBaselineOrCenter(
+                            ThreeLineBaselineFirstOffset - ThreeLineTrailingTopPadding,
+                            trailing
                         )
                     }
                 }
-                expanded(flex = 1f) {
-                    Padding(left = ContentLeftPadding, right = ContentRightPadding) {
-                        BaselinesOffsetColumn(
-                            listOf(
-                                ThreeLineBaselineFirstOffset,
-                                ThreeLineBaselineSecondOffset,
-                                ThreeLineBaselineThirdOffset
-                            )
-                        ) {
-                            if (overlineText != null) overlineText()
-                            text()
-                            secondaryText()
-                        }
-                    }
-                }
-                inflexible {
-                    if (trailing != null) {
-                        Padding(top = ThreeLineTrailingTopPadding, right = TrailingRightPadding) {
-                            OffsetToBaselineOrCenter(
-                                ThreeLineBaselineFirstOffset - ThreeLineTrailingTopPadding,
-                                trailing
-                            )
-                        }
-                    }
-                }
             }
         }
     }
@@ -411,8 +408,12 @@
  */
 // TODO(popam): consider making this a layout composable in ui-layout.
 @Composable
-private fun BaselinesOffsetColumn(offsets: List<Dp>, children: @Composable() () -> Unit) {
-    Layout(children) { measurables, constraints ->
+private fun BaselinesOffsetColumn(
+    offsets: List<Dp>,
+    modifier: Modifier = Modifier.None,
+    children: @Composable() () -> Unit
+) {
+    Layout(children, modifier) { measurables, constraints ->
         val childConstraints = constraints.copy(minHeight = 0.ipx, maxHeight = IntPx.Infinity)
         val placeables = measurables.map { it.measure(childConstraints) }
 
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 5d8d32b..4e91af0 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
@@ -37,7 +37,6 @@
 import androidx.ui.core.Text
 import androidx.ui.core.WithConstraints
 import androidx.ui.core.ambientDensity
-import androidx.ui.core.coerceIn
 import androidx.ui.core.dp
 import androidx.ui.core.max
 import androidx.ui.core.sp
@@ -52,10 +51,11 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Image
 import androidx.ui.layout.Container
-import androidx.ui.layout.FlexRow
 import androidx.ui.layout.LayoutExpandedWidth
 import androidx.ui.layout.LayoutGravity
+import androidx.ui.layout.LayoutHeight
 import androidx.ui.layout.Padding
+import androidx.ui.layout.Row
 import androidx.ui.layout.Stack
 import androidx.ui.material.TabRow.IndicatorTransition
 import androidx.ui.material.TabRow.TabPosition
@@ -134,18 +134,24 @@
     tab: @Composable() (Int, T) -> Unit
 ) {
     Surface(color = (+MaterialTheme.colors()).primary) {
-        val tabs = @Composable {
-            items.forEachIndexed { index, item ->
-                tab(index, item)
-            }
-        }
-
         WithConstraints { constraints ->
             val width = constraints.maxWidth
             // TODO: force scrollable for tabs that will be too small if they take up equal space?
             if (scrollable) {
+                val tabs = @Composable {
+                    items.forEachIndexed { index, item ->
+                        tab(index, item)
+                    }
+                }
                 ScrollableTabRow(width, selectedIndex, tabs, indicatorContainer)
             } else {
+                val tabs = @Composable { modifier: Modifier ->
+                    items.forEachIndexed { index, item ->
+                        Container(modifier) {
+                            tab(index, item)
+                        }
+                    }
+                }
                 FixedTabRow(width, items.size, tabs, indicatorContainer)
             }
         }
@@ -156,7 +162,7 @@
 private fun FixedTabRow(
     width: IntPx,
     tabCount: Int,
-    tabs: @Composable() () -> Unit,
+    tabs: @Composable() (Modifier) -> Unit,
     indicatorContainer: @Composable() (tabPositions: List<TabPosition>) -> Unit
 ) {
     val tabWidth = width / tabCount
@@ -173,8 +179,8 @@
     }
 
     Stack(LayoutExpandedWidth) {
-        FlexRow(LayoutGravity.Center) {
-            expanded(1f, tabs)
+        Row(LayoutGravity.Center) {
+            tabs(LayoutFlexible(1f))
         }
         divider(LayoutGravity.BottomCenter)
         Container(LayoutGravity.Stretch) {
@@ -459,7 +465,7 @@
 @Composable
 private fun TextTab(text: String, selected: Boolean, onSelected: () -> Unit, tint: Color) {
     BaseTab(selected = selected, onSelected = onSelected) {
-        Container(height = SmallTabHeight) {
+        Container(LayoutExpandedWidth + LayoutHeight(SmallTabHeight)) {
             TabTransition(color = tint, selected = selected) { tabTintColor ->
                 TabTextBaselineLayout {
                     TabText(text, tabTintColor)
@@ -480,7 +486,7 @@
 @Composable
 private fun IconTab(icon: Image, selected: Boolean, onSelected: () -> Unit, tint: Color) {
     BaseTab(selected = selected, onSelected = onSelected) {
-        Container(height = SmallTabHeight) {
+        Container(LayoutExpandedWidth + LayoutHeight(SmallTabHeight)) {
             TabTransition(color = tint, selected = selected) { tabTintColor ->
                 TabIcon(icon, tabTintColor)
             }
@@ -507,7 +513,7 @@
     tint: Color
 ) {
     BaseTab(selected = selected, onSelected = onSelected) {
-        Container(height = LargeTabHeight) {
+        Container(LayoutExpandedWidth + LayoutHeight(LargeTabHeight)) {
             TabTransition(color = tint, selected = selected) { tabTintColor ->
                 TabTextBaselineLayout(
                     icon = { TabIcon(icon, tabTintColor) },
diff --git a/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt b/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
index 960d679..1b0f910 100644
--- a/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
+++ b/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
@@ -33,8 +33,8 @@
 import androidx.ui.foundation.shape.RectangleShape
 import androidx.ui.graphics.Color
 import androidx.ui.layout.Column
-import androidx.ui.layout.FlexRow
-import androidx.ui.layout.Padding
+import androidx.ui.layout.LayoutPadding
+import androidx.ui.layout.Row
 import androidx.ui.text.AnnotatedString
 import androidx.ui.text.SpanStyle
 import androidx.ui.text.TextStyle
@@ -82,17 +82,15 @@
             selection = selection.value,
             onSelectionChange = { selection.value = it }
         ) {
-            Padding(12.dp) {
-                Column {
-                    Basics()
-                    AddTextElement()
-                    langContent.forEach {
-                        MultiLanguage(it[0], it[1])
-                    }
-                    Basics()
-                    MultiParagraph()
-                    AddTextElement()
+            Column(LayoutPadding(12.dp)) {
+                Basics()
+                AddTextElement()
+                langContent.forEach {
+                    MultiLanguage(it[0], it[1])
                 }
+                Basics()
+                MultiParagraph()
+                AddTextElement()
             }
         }
     }
@@ -104,20 +102,20 @@
         text = "Jetpack Compose Basics",
         style = commonStyle.merge(header)
     )
-    FlexRow {
-        inflexible {
-            Padding(8.dp) {
-                SizedRectangle(color = rectColor, width = 48.dp, height = 48.dp)
-            }
-        }
-        flexible(1f) {
-            Text(
-                text = "Jetpack Compose is a modern toolkit for building native Android UI." +
-                        " Jetpack Compose simplifies and accelerates UI development on Android " +
-                        "with less code, powerful tools, and intuitive Kotlin APIs.",
-                style = commonStyle
-            )
-        }
+    Row {
+        SizedRectangle(
+            modifier = LayoutPadding(8.dp),
+            color = rectColor,
+            width = 48.dp,
+            height = 48.dp
+        )
+        Text(
+            text = "Jetpack Compose is a modern toolkit for building native Android UI." +
+                    " Jetpack Compose simplifies and accelerates UI development on Android " +
+                    "with less code, powerful tools, and intuitive Kotlin APIs.",
+            modifier = LayoutFlexible(1f),
+            style = commonStyle
+        )
     }
 }
 
@@ -127,30 +125,29 @@
         text = "Add a text element",
         style = commonStyle.merge(header2)
     )
-    FlexRow {
-        flexible(1f) {
-            Column {
-                Text(
-                    text = AnnotatedString {
-                        append("To begin, follow the")
-                        withStyle(link) {
-                            append(" Jetpack Compose setup instructions ")
-                        }
-                        append(
-                            ", and create an app using the Empty Compose Activity template. Then " +
-                                    "add a text element to your blank activity. You do this by " +
-                                    "defining a content block, and calling the Text() function."
-                        )
-                    },
-                    style = commonStyle
-                )
-            }
+    Row {
+        Column(modifier = LayoutFlexible(1f)) {
+            Text(
+                text = AnnotatedString {
+                    append("To begin, follow the")
+                    withStyle(link) {
+                        append(" Jetpack Compose setup instructions ")
+                    }
+                    append(
+                        ", and create an app using the Empty Compose Activity template. Then " +
+                                "add a text element to your blank activity. You do this by " +
+                                "defining a content block, and calling the Text() function."
+                    )
+                },
+                style = commonStyle
+            )
         }
-        inflexible {
-            Padding(8.dp) {
-                SizedRectangle(color = rectColor, width = 48.dp, height = 48.dp)
-            }
-        }
+        SizedRectangle(
+            modifier = LayoutPadding(8.dp),
+            color = rectColor,
+            width = 48.dp,
+            height = 48.dp
+        )
     }
     EmptyRect()
     Text(
@@ -215,26 +212,29 @@
         text = title,
         style = commonStyle.merge(header)
     )
-    FlexRow {
-        inflexible {
-            Padding(8.dp) {
-                SizedRectangle(color = rectColor, width = 48.dp, height = 48.dp)
-            }
-        }
-        flexible(1f) {
-            Text(
-                text = content,
-                style = commonStyle
-            )
-        }
+    Row {
+        SizedRectangle(
+            modifier = LayoutPadding(8.dp),
+            color = rectColor,
+            width = 48.dp,
+            height = 48.dp
+        )
+        Text(
+            text = content,
+            modifier = LayoutFlexible(1f),
+            style = commonStyle
+        )
     }
 }
 
 @Composable
 fun EmptyRect() {
-    Padding(top = 20.dp, bottom = 20.dp) {
-        SizedRectangle(color = rectColor, width = 200.dp, height = 60.dp)
-    }
+    SizedRectangle(
+        modifier = LayoutPadding(top = 20.dp, bottom = 20.dp),
+        color = rectColor,
+        width = 200.dp,
+        height = 60.dp
+    )
 }
 
 @Composable