diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt
index 966bc6e..8334001 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt
@@ -22,7 +22,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Canvas
 import androidx.compose.foundation.ContentGravity
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.drawOutline
 import androidx.compose.foundation.layout.preferredSize
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt
index a811778..05b6624 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt
@@ -22,7 +22,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.compose.foundation.drawBorder
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.shift
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt
index 1152cb1..ffe6b123 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt
@@ -22,7 +22,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.compose.foundation.drawBorder
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.preferredSize
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/AnimateContentSizeDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/AnimateContentSizeDemo.kt
index 06d9b93..e99966a 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/AnimateContentSizeDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/AnimateContentSizeDemo.kt
@@ -32,7 +32,7 @@
 import androidx.compose.foundation.layout.sizeIn
 import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.compose.foundation.layout.wrapContentSize
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.getValue
 import androidx.compose.mutableStateOf
 import androidx.compose.remember
@@ -66,7 +66,9 @@
     val longText = "Very long text\nthat spans across\nmultiple lines"
     var short by remember { mutableStateOf(true) }
     Box(modifier = Modifier
-        .background(Color.Blue, RoundedCornerShape(15.dp))
+        .background(Color.Blue,
+            RoundedCornerShape(15.dp)
+        )
         .clickable { short = !short }
         .padding(20.dp)
         .wrapContentSize()
diff --git a/ui/ui-animation/samples/src/main/java/androidx/compose/animation/samples/AnimationModifierSample.kt b/ui/ui-animation/samples/src/main/java/androidx/compose/animation/samples/AnimationModifierSample.kt
index ee53466e..4087c79 100644
--- a/ui/ui-animation/samples/src/main/java/androidx/compose/animation/samples/AnimationModifierSample.kt
+++ b/ui/ui-animation/samples/src/main/java/androidx/compose/animation/samples/AnimationModifierSample.kt
@@ -25,7 +25,7 @@
 import androidx.compose.foundation.currentTextStyle
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.wrapContentSize
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.getValue
 import androidx.compose.mutableStateOf
 import androidx.compose.remember
@@ -42,7 +42,9 @@
     val longText = "Very long text\nthat spans across\nmultiple lines"
     var short by remember { mutableStateOf(true) }
     Box(modifier = Modifier
-        .background(Color.Blue, RoundedCornerShape(15.dp))
+        .background(Color.Blue,
+            RoundedCornerShape(15.dp)
+        )
         .clickable { short = !short }
         .padding(20.dp)
         .wrapContentSize()
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt
index 133da32..118d299 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt
@@ -35,7 +35,7 @@
 import androidx.compose.foundation.layout.preferredHeight
 import androidx.compose.foundation.layout.preferredSize
 import androidx.compose.foundation.layout.preferredWidth
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.state
 import androidx.ui.core.Alignment
 import androidx.ui.core.Modifier
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt
index 0ae637c..7dca5ab 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt
@@ -27,7 +27,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.Text
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Stack
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt
index 56a460e..025c353 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt
@@ -22,7 +22,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.Popup
 import androidx.compose.foundation.Box
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.preferredSize
 import androidx.compose.ui.unit.dp
diff --git a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt
index 75970e3..6178ade 100644
--- a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt
+++ b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt
@@ -27,7 +27,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.Text
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.ColumnScope.gravity
diff --git a/ui/ui-foundation/api/0.1.0-dev16.txt b/ui/ui-foundation/api/0.1.0-dev16.txt
index e5989f5..2f8e11b 100644
--- a/ui/ui-foundation/api/0.1.0-dev16.txt
+++ b/ui/ui-foundation/api/0.1.0-dev16.txt
@@ -344,26 +344,16 @@
 
 package androidx.compose.foundation.shape {
 
-  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
-    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-  }
-
-}
-
-package androidx.compose.foundation.shape.corner {
-
   public abstract class CornerBasedShape implements androidx.compose.ui.graphics.Shape {
-    ctor public CornerBasedShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public abstract androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight = topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
-    method public final androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize all);
+    ctor public CornerBasedShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public abstract androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.CornerSize topRight = topRight, androidx.compose.foundation.shape.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft = bottomLeft);
+    method public final androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize all);
     method public abstract androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
     method public final androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomRight();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopRight();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomRight();
+    method public final androidx.compose.foundation.shape.CornerSize getTopLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getTopRight();
   }
 
   @androidx.compose.Immutable public interface CornerSize {
@@ -371,43 +361,49 @@
   }
 
   public final class CornerSizeKt {
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(float size);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CornerSize getZeroCornerSize();
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(float size);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CornerSize getZeroCornerSize();
   }
 
-  public final class CutCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.CutCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class CutCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public CutCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.CutCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
   }
 
-  public final class RoundedCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.RoundedCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
+    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
+  }
+
+  public final class RoundedCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public RoundedCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.RoundedCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape getCircleShape();
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape getCircleShape();
   }
 
 }
diff --git a/ui/ui-foundation/api/current.txt b/ui/ui-foundation/api/current.txt
index e5989f5..2f8e11b 100644
--- a/ui/ui-foundation/api/current.txt
+++ b/ui/ui-foundation/api/current.txt
@@ -344,26 +344,16 @@
 
 package androidx.compose.foundation.shape {
 
-  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
-    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-  }
-
-}
-
-package androidx.compose.foundation.shape.corner {
-
   public abstract class CornerBasedShape implements androidx.compose.ui.graphics.Shape {
-    ctor public CornerBasedShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public abstract androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight = topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
-    method public final androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize all);
+    ctor public CornerBasedShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public abstract androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.CornerSize topRight = topRight, androidx.compose.foundation.shape.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft = bottomLeft);
+    method public final androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize all);
     method public abstract androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
     method public final androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomRight();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopRight();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomRight();
+    method public final androidx.compose.foundation.shape.CornerSize getTopLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getTopRight();
   }
 
   @androidx.compose.Immutable public interface CornerSize {
@@ -371,43 +361,49 @@
   }
 
   public final class CornerSizeKt {
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(float size);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CornerSize getZeroCornerSize();
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(float size);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CornerSize getZeroCornerSize();
   }
 
-  public final class CutCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.CutCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class CutCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public CutCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.CutCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
   }
 
-  public final class RoundedCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.RoundedCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
+    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
+  }
+
+  public final class RoundedCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public RoundedCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.RoundedCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape getCircleShape();
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape getCircleShape();
   }
 
 }
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt
index e5989f5..2f8e11b 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt
@@ -344,26 +344,16 @@
 
 package androidx.compose.foundation.shape {
 
-  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
-    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-  }
-
-}
-
-package androidx.compose.foundation.shape.corner {
-
   public abstract class CornerBasedShape implements androidx.compose.ui.graphics.Shape {
-    ctor public CornerBasedShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public abstract androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight = topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
-    method public final androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize all);
+    ctor public CornerBasedShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public abstract androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.CornerSize topRight = topRight, androidx.compose.foundation.shape.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft = bottomLeft);
+    method public final androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize all);
     method public abstract androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
     method public final androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomRight();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopRight();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomRight();
+    method public final androidx.compose.foundation.shape.CornerSize getTopLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getTopRight();
   }
 
   @androidx.compose.Immutable public interface CornerSize {
@@ -371,43 +361,49 @@
   }
 
   public final class CornerSizeKt {
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(float size);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CornerSize getZeroCornerSize();
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(float size);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CornerSize getZeroCornerSize();
   }
 
-  public final class CutCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.CutCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class CutCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public CutCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.CutCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
   }
 
-  public final class RoundedCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.RoundedCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
+    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
+  }
+
+  public final class RoundedCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public RoundedCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.RoundedCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape getCircleShape();
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape getCircleShape();
   }
 
 }
diff --git a/ui/ui-foundation/api/public_plus_experimental_current.txt b/ui/ui-foundation/api/public_plus_experimental_current.txt
index e5989f5..2f8e11b 100644
--- a/ui/ui-foundation/api/public_plus_experimental_current.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_current.txt
@@ -344,26 +344,16 @@
 
 package androidx.compose.foundation.shape {
 
-  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
-    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-  }
-
-}
-
-package androidx.compose.foundation.shape.corner {
-
   public abstract class CornerBasedShape implements androidx.compose.ui.graphics.Shape {
-    ctor public CornerBasedShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public abstract androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight = topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
-    method public final androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize all);
+    ctor public CornerBasedShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public abstract androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.CornerSize topRight = topRight, androidx.compose.foundation.shape.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft = bottomLeft);
+    method public final androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize all);
     method public abstract androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
     method public final androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomRight();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopRight();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomRight();
+    method public final androidx.compose.foundation.shape.CornerSize getTopLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getTopRight();
   }
 
   @androidx.compose.Immutable public interface CornerSize {
@@ -371,43 +361,49 @@
   }
 
   public final class CornerSizeKt {
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(float size);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CornerSize getZeroCornerSize();
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(float size);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CornerSize getZeroCornerSize();
   }
 
-  public final class CutCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.CutCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class CutCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public CutCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.CutCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
   }
 
-  public final class RoundedCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.RoundedCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
+    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
+  }
+
+  public final class RoundedCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public RoundedCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.RoundedCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape getCircleShape();
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape getCircleShape();
   }
 
 }
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev16.txt b/ui/ui-foundation/api/restricted_0.1.0-dev16.txt
index e5989f5..2f8e11b 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev16.txt
@@ -344,26 +344,16 @@
 
 package androidx.compose.foundation.shape {
 
-  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
-    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-  }
-
-}
-
-package androidx.compose.foundation.shape.corner {
-
   public abstract class CornerBasedShape implements androidx.compose.ui.graphics.Shape {
-    ctor public CornerBasedShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public abstract androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight = topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
-    method public final androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize all);
+    ctor public CornerBasedShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public abstract androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.CornerSize topRight = topRight, androidx.compose.foundation.shape.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft = bottomLeft);
+    method public final androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize all);
     method public abstract androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
     method public final androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomRight();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopRight();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomRight();
+    method public final androidx.compose.foundation.shape.CornerSize getTopLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getTopRight();
   }
 
   @androidx.compose.Immutable public interface CornerSize {
@@ -371,43 +361,49 @@
   }
 
   public final class CornerSizeKt {
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(float size);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CornerSize getZeroCornerSize();
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(float size);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CornerSize getZeroCornerSize();
   }
 
-  public final class CutCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.CutCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class CutCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public CutCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.CutCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
   }
 
-  public final class RoundedCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.RoundedCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
+    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
+  }
+
+  public final class RoundedCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public RoundedCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.RoundedCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape getCircleShape();
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape getCircleShape();
   }
 
 }
diff --git a/ui/ui-foundation/api/restricted_current.txt b/ui/ui-foundation/api/restricted_current.txt
index e5989f5..2f8e11b 100644
--- a/ui/ui-foundation/api/restricted_current.txt
+++ b/ui/ui-foundation/api/restricted_current.txt
@@ -344,26 +344,16 @@
 
 package androidx.compose.foundation.shape {
 
-  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
-    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-  }
-
-}
-
-package androidx.compose.foundation.shape.corner {
-
   public abstract class CornerBasedShape implements androidx.compose.ui.graphics.Shape {
-    ctor public CornerBasedShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public abstract androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight = topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
-    method public final androidx.compose.foundation.shape.corner.CornerBasedShape copy(androidx.compose.foundation.shape.corner.CornerSize all);
+    ctor public CornerBasedShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public abstract androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize topLeft = topLeft, androidx.compose.foundation.shape.CornerSize topRight = topRight, androidx.compose.foundation.shape.CornerSize bottomRight = bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft = bottomLeft);
+    method public final androidx.compose.foundation.shape.CornerBasedShape copy(androidx.compose.foundation.shape.CornerSize all);
     method public abstract androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
     method public final androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getBottomRight();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopLeft();
-    method public final androidx.compose.foundation.shape.corner.CornerSize getTopRight();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getBottomRight();
+    method public final androidx.compose.foundation.shape.CornerSize getTopLeft();
+    method public final androidx.compose.foundation.shape.CornerSize getTopRight();
   }
 
   @androidx.compose.Immutable public interface CornerSize {
@@ -371,43 +361,49 @@
   }
 
   public final class CornerSizeKt {
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(float size);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
-    method @androidx.compose.Stable public static androidx.compose.foundation.shape.corner.CornerSize CornerSize-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CornerSize getZeroCornerSize();
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(float size);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize(@IntRange(from=0, to=100) int percent);
+    method @androidx.compose.Stable public static androidx.compose.foundation.shape.CornerSize CornerSize-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CornerSize getZeroCornerSize();
   }
 
-  public final class CutCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.CutCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class CutCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public CutCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.CutCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.CutCornerShape CutCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
   }
 
-  public final class RoundedCornerShape extends androidx.compose.foundation.shape.corner.CornerBasedShape {
-    ctor public RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.compose.foundation.shape.corner.RoundedCornerShape copy(androidx.compose.foundation.shape.corner.CornerSize topLeft, androidx.compose.foundation.shape.corner.CornerSize topRight, androidx.compose.foundation.shape.corner.CornerSize bottomRight, androidx.compose.foundation.shape.corner.CornerSize bottomLeft);
+  public final class GenericShape implements androidx.compose.ui.graphics.Shape {
+    ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.compose.ui.graphics.Path,? super androidx.compose.ui.geometry.Size,kotlin.Unit> builder);
+    method public androidx.compose.ui.graphics.Outline createOutline-lwCvPpU(long size, androidx.compose.ui.unit.Density density);
+  }
+
+  public final class RoundedCornerShape extends androidx.compose.foundation.shape.CornerBasedShape {
+    ctor public RoundedCornerShape(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
+    method public androidx.compose.foundation.shape.RoundedCornerShape copy(androidx.compose.foundation.shape.CornerSize topLeft, androidx.compose.foundation.shape.CornerSize topRight, androidx.compose.foundation.shape.CornerSize bottomRight, androidx.compose.foundation.shape.CornerSize bottomLeft);
     method public androidx.compose.ui.graphics.Outline createOutline-hMawgr0(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.corner.CornerSize corner);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(int percent);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
-    method public static androidx.compose.foundation.shape.corner.RoundedCornerShape getCircleShape();
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(androidx.compose.foundation.shape.CornerSize corner);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(int percent);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(float topLeft = 0.0f, float topRight = 0.0f, float bottomRight = 0.0f, float bottomLeft = 0.0f);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape(@IntRange(from=0, to=100) int topLeftPercent = 0, @IntRange(from=0, to=100) int topRightPercent = 0, @IntRange(from=0, to=100) int bottomRightPercent = 0, @IntRange(from=0, to=100) int bottomLeftPercent = 0);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-0680j_4(float size);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape RoundedCornerShape-ZmiikuI(float topLeft = 0.dp, float topRight = 0.dp, float bottomRight = 0.dp, float bottomLeft = 0.dp);
+    method public static androidx.compose.foundation.shape.RoundedCornerShape getCircleShape();
   }
 
 }
diff --git a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt
index e654675..2c58465 100644
--- a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt
+++ b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt
@@ -23,8 +23,8 @@
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.samples.SimpleCircleBox
-import androidx.compose.foundation.shape.corner.CutCornerShape
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.CutCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
diff --git a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
index e69861a..f291522 100644
--- a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
+++ b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
@@ -32,7 +32,7 @@
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.currentTextStyle
 import androidx.compose.foundation.lazy.LazyRowItems
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt
index 78a2350..35f7fb1 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt
@@ -22,8 +22,8 @@
 import androidx.compose.foundation.Border
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.drawBorder
-import androidx.compose.foundation.shape.corner.CircleShape
-import androidx.compose.foundation.shape.corner.CutCornerShape
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.foundation.shape.CutCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.HorizontalGradient
 import androidx.compose.ui.graphics.TileMode
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt
index e1e9169..9a5350f 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt
@@ -23,7 +23,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.Text
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.preferredSize
 import androidx.compose.ui.unit.dp
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt
index 0834cdf..11e528e 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
-import androidx.compose.foundation.shape.corner.CutCornerShape
+import androidx.compose.foundation.shape.CutCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.HorizontalGradient
 import androidx.compose.foundation.layout.padding
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt
index d54e536..ca8e7a6 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt
@@ -23,7 +23,7 @@
 import androidx.ui.core.DensityAmbient
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.graphics.SolidColor
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
index 2585a55..b65adea 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
@@ -23,8 +23,8 @@
 import androidx.ui.core.DensityAmbient
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.compose.foundation.shape.corner.CircleShape
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.ui.graphics.Shape
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt
index 399b365..6f761b4 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt
@@ -27,7 +27,7 @@
 import androidx.ui.core.positionInRoot
 import androidx.ui.core.onPositioned
 import androidx.ui.core.testTag
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
 import androidx.compose.foundation.layout.Stack
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt
index e36e690..9beac93 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt
@@ -22,7 +22,7 @@
 import androidx.ui.core.Alignment
 import androidx.ui.core.DensityAmbient
 import androidx.ui.core.Modifier
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CornerBasedShapeTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CornerBasedShapeTest.kt
similarity index 98%
rename from ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CornerBasedShapeTest.kt
rename to ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CornerBasedShapeTest.kt
index 747ddf2..cf7eb2e 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CornerBasedShapeTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CornerBasedShapeTest.kt
@@ -14,15 +14,15 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
-import androidx.test.filters.SmallTest
 import androidx.compose.ui.geometry.RRect
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.toRect
 import androidx.compose.ui.graphics.Outline
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.dp
+import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -211,7 +211,10 @@
             bottomLeft = CornerSize(50)
         )
         assertThat(impl)
-            .isEqualTo(impl.copy(bottomRight = CornerSize(3.dp)))
+            .isEqualTo(impl.copy(bottomRight = CornerSize(
+                3.dp
+            )
+            ))
     }
 }
 
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CornerSizeTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CornerSizeTest.kt
similarity index 88%
rename from ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CornerSizeTest.kt
rename to ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CornerSizeTest.kt
index 96fe35d..13244c6 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CornerSizeTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CornerSizeTest.kt
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
-import androidx.test.filters.SmallTest
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.dp
+import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -58,11 +58,15 @@
 
     @Test
     fun pxCornersAreEquals() {
-        assertThat(CornerSize(24.0f)).isEqualTo(CornerSize(24.0f))
+        assertThat(CornerSize(24.0f)).isEqualTo(
+            CornerSize(24.0f)
+        )
     }
 
     @Test
     fun dpCornersAreEquals() {
-        assertThat(CornerSize(8.dp)).isEqualTo(CornerSize(8.dp))
+        assertThat(CornerSize(8.dp)).isEqualTo(
+            CornerSize(8.dp)
+        )
     }
 }
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CutCornerShapeTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CutCornerShapeTest.kt
similarity index 81%
rename from ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CutCornerShapeTest.kt
rename to ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CutCornerShapeTest.kt
index 440cf21..d785ca1 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/CutCornerShapeTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/CutCornerShapeTest.kt
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
-import androidx.test.filters.SmallTest
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.toRect
 import androidx.compose.ui.graphics.Outline
@@ -25,6 +24,7 @@
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.dp
+import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Assert
 import org.junit.Test
@@ -62,7 +62,12 @@
         val size2 = 22f
         val size3 = 32f
         val size4 = 42f
-        val cut = CutCornerShape(size1, size2, size3, size4)
+        val cut = CutCornerShape(
+            size1,
+            size2,
+            size3,
+            size4
+        )
 
         val outline = cut.toOutline() as Outline.Generic
         assertPathsEquals(outline.path, Path().apply {
@@ -80,7 +85,12 @@
 
     @Test
     fun createsRectangleOutlineForZeroSizedCorners() {
-        val rounded = CutCornerShape(0.0f, 0.0f, 0.0f, 0.0f)
+        val rounded = CutCornerShape(
+            0.0f,
+            0.0f,
+            0.0f,
+            0.0f
+        )
 
         assertThat(rounded.toOutline())
             .isEqualTo(Outline.Rectangle(size.toRect()))
@@ -94,21 +104,29 @@
 
     @Test
     fun cutCornerUpdateAllCornerSize() {
-        assertThat(CutCornerShape(10.0f).copy(CornerSize(5.0f)))
+        assertThat(
+            CutCornerShape(10.0f).copy(
+            CornerSize(
+                5.0f
+            )
+        ))
             .isEqualTo(CutCornerShape(5.0f))
     }
 
     @Test
     fun cutCornerUpdateTwoCornerSizes() {
-        assertThat(CutCornerShape(10.0f).copy(
+        assertThat(
+            CutCornerShape(10.0f).copy(
             topRight = CornerSize(3.dp),
             bottomLeft = CornerSize(50)
-        )).isEqualTo(CutCornerShape(
-            topLeft = CornerSize(10.0f),
-            topRight = CornerSize(3.dp),
-            bottomRight = CornerSize(10.0f),
-            bottomLeft = CornerSize(50)
-        ))
+        )).isEqualTo(
+            CutCornerShape(
+                topLeft = CornerSize(10.0f),
+                topRight = CornerSize(3.dp),
+                bottomRight = CornerSize(10.0f),
+                bottomLeft = CornerSize(50)
+            )
+        )
     }
 
     private fun Shape.toOutline() = createOutline(size, density)
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/RoundedCornerShapeTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/RoundedCornerShapeTest.kt
similarity index 79%
rename from ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/RoundedCornerShapeTest.kt
rename to ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/RoundedCornerShapeTest.kt
index 2b0dcf8..4c943ac 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/corner/RoundedCornerShapeTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/shape/RoundedCornerShapeTest.kt
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
-import androidx.test.filters.SmallTest
 import androidx.compose.ui.geometry.RRect
 import androidx.compose.ui.geometry.Radius
 import androidx.compose.ui.geometry.Size
@@ -25,6 +24,7 @@
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.ui.unit.Density
 import androidx.compose.ui.unit.dp
+import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Assert.assertEquals
 import org.junit.Test
@@ -57,7 +57,12 @@
         val radius2 = 22f
         val radius3 = 32f
         val radius4 = 42f
-        val rounded = RoundedCornerShape(radius1, radius2, radius3, radius4)
+        val rounded = RoundedCornerShape(
+            radius1,
+            radius2,
+            radius3,
+            radius4
+        )
 
         val outline = rounded.toOutline() as Outline.Rounded
         assertThat(outline.rrect).isEqualTo(
@@ -73,7 +78,12 @@
 
     @Test
     fun createsRectangleOutlineForZeroSizedCorners() {
-        val rounded = RoundedCornerShape(0.0f, 0.0f, 0.0f, 0.0f)
+        val rounded = RoundedCornerShape(
+            0.0f,
+            0.0f,
+            0.0f,
+            0.0f
+        )
 
         assertThat(rounded.toOutline())
             .isEqualTo(Outline.Rectangle(size.toRect()))
@@ -87,13 +97,19 @@
 
     @Test
     fun roundedCornerUpdateAllCornerSize() {
-        assertThat(RoundedCornerShape(10.0f).copy(CornerSize(5.dp)))
+        assertThat(
+            RoundedCornerShape(10.0f).copy(
+            CornerSize(
+                5.dp
+            )
+        ))
             .isEqualTo(RoundedCornerShape(5.dp))
     }
 
     @Test
     fun roundedCornerUpdateTwoCornerSizes() {
-        val original = RoundedCornerShape(10.0f).copy(
+        val original = RoundedCornerShape(10.0f)
+            .copy(
             topLeft = CornerSize(3.dp),
             bottomLeft = CornerSize(50)
         )
@@ -102,15 +118,18 @@
         assertEquals(CornerSize(10.0f), original.topRight)
         assertEquals(CornerSize(10.0f), original.bottomRight)
         assertEquals(CornerSize(50), original.bottomLeft)
-        assertThat(RoundedCornerShape(10.0f).copy(
+        assertThat(
+            RoundedCornerShape(10.0f).copy(
             topLeft = CornerSize(3.dp),
             bottomLeft = CornerSize(50)
-        )).isEqualTo(RoundedCornerShape(
-            topLeft = CornerSize(3.dp),
-            topRight = CornerSize(10.0f),
-            bottomRight = CornerSize(10.0f),
-            bottomLeft = CornerSize(50)
-        ))
+        )).isEqualTo(
+            RoundedCornerShape(
+                topLeft = CornerSize(3.dp),
+                topRight = CornerSize(10.0f),
+                bottomRight = CornerSize(10.0f),
+                bottomLeft = CornerSize(50)
+            )
+        )
     }
 
     private fun Shape.toOutline() = createOutline(size, density)
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CornerBasedShape.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CornerBasedShape.kt
similarity index 97%
rename from ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CornerBasedShape.kt
rename to ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CornerBasedShape.kt
index 4431aa9..0abb7d7 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CornerBasedShape.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CornerBasedShape.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.graphics.Outline
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CornerSize.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CornerSize.kt
similarity index 96%
rename from ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CornerSize.kt
rename to ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CornerSize.kt
index 5fc8dac..960bb95 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CornerSize.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CornerSize.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
 import androidx.compose.ui.geometry.Size
 import androidx.compose.Immutable
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CutCornerShape.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CutCornerShape.kt
similarity index 97%
rename from ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CutCornerShape.kt
rename to ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CutCornerShape.kt
index 24fd2fe..5d46d7d 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/CutCornerShape.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/CutCornerShape.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.geometry.toRect
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/RoundedCornerShape.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/RoundedCornerShape.kt
similarity index 97%
rename from ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/RoundedCornerShape.kt
rename to ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/RoundedCornerShape.kt
index 28298e7..5beb828 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/corner/RoundedCornerShape.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/shape/RoundedCornerShape.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.compose.foundation.shape.corner
+package androidx.compose.foundation.shape
 
 import androidx.compose.ui.geometry.RRect
 import androidx.compose.ui.geometry.Radius
diff --git a/ui/ui-material/api/0.1.0-dev16.txt b/ui/ui-material/api/0.1.0-dev16.txt
index 3595e50..6e406b2 100644
--- a/ui/ui-material/api/0.1.0-dev16.txt
+++ b/ui/ui-material/api/0.1.0-dev16.txt
@@ -250,15 +250,15 @@
   }
 
   public final class Shapes {
-    ctor public Shapes(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
+    ctor public Shapes(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
     ctor public Shapes();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component1();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component2();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component3();
-    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getLarge();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getMedium();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getSmall();
+    method public androidx.compose.foundation.shape.CornerBasedShape component1();
+    method public androidx.compose.foundation.shape.CornerBasedShape component2();
+    method public androidx.compose.foundation.shape.CornerBasedShape component3();
+    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
   }
 
   public final class ShapesKt {
diff --git a/ui/ui-material/api/current.txt b/ui/ui-material/api/current.txt
index 3595e50..6e406b2 100644
--- a/ui/ui-material/api/current.txt
+++ b/ui/ui-material/api/current.txt
@@ -250,15 +250,15 @@
   }
 
   public final class Shapes {
-    ctor public Shapes(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
+    ctor public Shapes(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
     ctor public Shapes();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component1();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component2();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component3();
-    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getLarge();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getMedium();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getSmall();
+    method public androidx.compose.foundation.shape.CornerBasedShape component1();
+    method public androidx.compose.foundation.shape.CornerBasedShape component2();
+    method public androidx.compose.foundation.shape.CornerBasedShape component3();
+    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
   }
 
   public final class ShapesKt {
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt
index 3595e50..6e406b2 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt
@@ -250,15 +250,15 @@
   }
 
   public final class Shapes {
-    ctor public Shapes(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
+    ctor public Shapes(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
     ctor public Shapes();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component1();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component2();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component3();
-    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getLarge();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getMedium();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getSmall();
+    method public androidx.compose.foundation.shape.CornerBasedShape component1();
+    method public androidx.compose.foundation.shape.CornerBasedShape component2();
+    method public androidx.compose.foundation.shape.CornerBasedShape component3();
+    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
   }
 
   public final class ShapesKt {
diff --git a/ui/ui-material/api/public_plus_experimental_current.txt b/ui/ui-material/api/public_plus_experimental_current.txt
index 3595e50..6e406b2 100644
--- a/ui/ui-material/api/public_plus_experimental_current.txt
+++ b/ui/ui-material/api/public_plus_experimental_current.txt
@@ -250,15 +250,15 @@
   }
 
   public final class Shapes {
-    ctor public Shapes(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
+    ctor public Shapes(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
     ctor public Shapes();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component1();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component2();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component3();
-    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getLarge();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getMedium();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getSmall();
+    method public androidx.compose.foundation.shape.CornerBasedShape component1();
+    method public androidx.compose.foundation.shape.CornerBasedShape component2();
+    method public androidx.compose.foundation.shape.CornerBasedShape component3();
+    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
   }
 
   public final class ShapesKt {
diff --git a/ui/ui-material/api/restricted_0.1.0-dev16.txt b/ui/ui-material/api/restricted_0.1.0-dev16.txt
index 4b597bf..1fa1fe0 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev16.txt
@@ -251,15 +251,15 @@
   }
 
   public final class Shapes {
-    ctor public Shapes(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
+    ctor public Shapes(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
     ctor public Shapes();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component1();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component2();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component3();
-    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getLarge();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getMedium();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getSmall();
+    method public androidx.compose.foundation.shape.CornerBasedShape component1();
+    method public androidx.compose.foundation.shape.CornerBasedShape component2();
+    method public androidx.compose.foundation.shape.CornerBasedShape component3();
+    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
   }
 
   public final class ShapesKt {
diff --git a/ui/ui-material/api/restricted_current.txt b/ui/ui-material/api/restricted_current.txt
index 4b597bf..1fa1fe0 100644
--- a/ui/ui-material/api/restricted_current.txt
+++ b/ui/ui-material/api/restricted_current.txt
@@ -251,15 +251,15 @@
   }
 
   public final class Shapes {
-    ctor public Shapes(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
+    ctor public Shapes(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
     ctor public Shapes();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component1();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component2();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape component3();
-    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.corner.CornerBasedShape small, androidx.compose.foundation.shape.corner.CornerBasedShape medium, androidx.compose.foundation.shape.corner.CornerBasedShape large);
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getLarge();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getMedium();
-    method public androidx.compose.foundation.shape.corner.CornerBasedShape getSmall();
+    method public androidx.compose.foundation.shape.CornerBasedShape component1();
+    method public androidx.compose.foundation.shape.CornerBasedShape component2();
+    method public androidx.compose.foundation.shape.CornerBasedShape component3();
+    method public androidx.ui.material.Shapes copy(androidx.compose.foundation.shape.CornerBasedShape small, androidx.compose.foundation.shape.CornerBasedShape medium, androidx.compose.foundation.shape.CornerBasedShape large);
+    method public androidx.compose.foundation.shape.CornerBasedShape getLarge();
+    method public androidx.compose.foundation.shape.CornerBasedShape getMedium();
+    method public androidx.compose.foundation.shape.CornerBasedShape getSmall();
   }
 
   public final class ShapesKt {
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
index 8f1ca2a..bf053a8 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
@@ -41,7 +41,7 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.currentTextStyle
 import androidx.compose.foundation.shape.GenericShape
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.RRect
 import androidx.compose.ui.geometry.Radius
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 4f24d99..5e7c8e0 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
@@ -30,8 +30,8 @@
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.rememberScrollState
-import androidx.compose.foundation.shape.corner.CircleShape
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.lerp
 import androidx.compose.ui.graphics.toArgb
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt
index 3a49254..63133387 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt
@@ -24,7 +24,7 @@
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.clickable
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.InnerPadding
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
index a7bb160..7e5ec99 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
@@ -26,9 +26,9 @@
 import androidx.compose.foundation.Icon
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
-import androidx.compose.foundation.shape.corner.CircleShape
-import androidx.compose.foundation.shape.corner.CutCornerShape
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.CircleShape
+import androidx.compose.foundation.shape.CutCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.preferredHeight
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
index 97748b7..a9c18a8 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
@@ -37,7 +37,7 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.compose.foundation.drawBorder
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Column
diff --git a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ButtonTest.kt b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ButtonTest.kt
index b044532..790a4d8 100644
--- a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ButtonTest.kt
+++ b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ButtonTest.kt
@@ -36,7 +36,7 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.contentColor
 import androidx.compose.foundation.currentTextStyle
-import androidx.compose.foundation.shape.corner.CutCornerShape
+import androidx.compose.foundation.shape.CutCornerShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
diff --git a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/CardTest.kt b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/CardTest.kt
index 6caa46e..8f60e5b 100644
--- a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/CardTest.kt
+++ b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/CardTest.kt
@@ -24,7 +24,7 @@
 import androidx.ui.core.semantics.semantics
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
-import androidx.compose.foundation.shape.corner.CutCornerShape
+import androidx.compose.foundation.shape.CutCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Stack
 import androidx.compose.foundation.layout.preferredSize
diff --git a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/FloatingActionButtonTest.kt b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/FloatingActionButtonTest.kt
index 9d3ab5e..cc472e7 100644
--- a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/FloatingActionButtonTest.kt
+++ b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/FloatingActionButtonTest.kt
@@ -28,7 +28,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Icon
 import androidx.compose.foundation.Text
-import androidx.compose.foundation.shape.corner.CutCornerShape
+import androidx.compose.foundation.shape.CutCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Spacer
diff --git a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/SnackbarTest.kt b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/SnackbarTest.kt
index ae7b3e2..bc24d3f 100644
--- a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/SnackbarTest.kt
+++ b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/SnackbarTest.kt
@@ -24,7 +24,7 @@
 import androidx.ui.core.semantics.semantics
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Text
-import androidx.compose.foundation.shape.corner.CutCornerShape
+import androidx.compose.foundation.shape.CutCornerShape
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.compositeOver
 import androidx.compose.foundation.layout.DpConstraints
diff --git a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ripple/RippleIndicationTest.kt b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ripple/RippleIndicationTest.kt
index 4b3f082..ebce69f 100644
--- a/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ripple/RippleIndicationTest.kt
+++ b/ui/ui-material/src/androidAndroidTest/kotlin/androidx/ui/material/ripple/RippleIndicationTest.kt
@@ -35,7 +35,7 @@
 import androidx.compose.foundation.Interaction
 import androidx.compose.foundation.InteractionState
 import androidx.compose.foundation.indication
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.compositeOver
diff --git a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/AppBar.kt b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/AppBar.kt
index d31927f..42ee0fc 100644
--- a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/AppBar.kt
+++ b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/AppBar.kt
@@ -19,7 +19,7 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.ProvideTextStyle
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Rect
 import androidx.compose.ui.geometry.Size
diff --git a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/FloatingActionButton.kt b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/FloatingActionButton.kt
index 51932bb..e596ead 100644
--- a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/FloatingActionButton.kt
+++ b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/FloatingActionButton.kt
@@ -28,7 +28,7 @@
 import androidx.compose.foundation.ProvideTextStyle
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.indication
-import androidx.compose.foundation.shape.corner.CornerSize
+import androidx.compose.foundation.shape.CornerSize
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
 import androidx.compose.foundation.layout.Row
diff --git a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Shapes.kt b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Shapes.kt
index 07447c6..7b4bd22 100644
--- a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Shapes.kt
+++ b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Shapes.kt
@@ -17,8 +17,8 @@
 package androidx.ui.material
 
 import androidx.compose.staticAmbientOf
-import androidx.compose.foundation.shape.corner.CornerBasedShape
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
+import androidx.compose.foundation.shape.CornerBasedShape
+import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.ui.unit.dp
 
 /**
diff --git a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Slider.kt b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Slider.kt
index bd13bb7..3127eb2 100644
--- a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Slider.kt
+++ b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Slider.kt
@@ -43,7 +43,7 @@
 import androidx.compose.foundation.animation.defaultFlingConfig
 import androidx.compose.foundation.gestures.draggable
 import androidx.compose.foundation.indication
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.lerp
 import androidx.compose.ui.graphics.Color
diff --git a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Switch.kt b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Switch.kt
index 0ae74e4..9962bf8 100644
--- a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Switch.kt
+++ b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/Switch.kt
@@ -32,7 +32,7 @@
 import androidx.compose.foundation.InteractionState
 import androidx.compose.foundation.indication
 import androidx.compose.foundation.selection.toggleable
-import androidx.compose.foundation.shape.corner.CircleShape
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.StrokeCap
diff --git a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/TextField.kt b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/TextField.kt
index 866c46b..00bdab0 100644
--- a/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/TextField.kt
+++ b/ui/ui-material/src/commonMain/kotlin/androidx/ui/material/TextField.kt
@@ -33,7 +33,7 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.compose.foundation.currentTextStyle
-import androidx.compose.foundation.shape.corner.ZeroCornerSize
+import androidx.compose.foundation.shape.ZeroCornerSize
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.Shape
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt
index 1e52110..6e197dc 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt
@@ -20,10 +20,10 @@
 import androidx.ui.core.AbsoluteAlignment
 import androidx.ui.core.Alignment
 import androidx.compose.foundation.Border
-import androidx.compose.foundation.shape.corner.CornerSize
-import androidx.compose.foundation.shape.corner.CutCornerShape
-import androidx.compose.foundation.shape.corner.RoundedCornerShape
-import androidx.compose.foundation.shape.corner.ZeroCornerSize
+import androidx.compose.foundation.shape.CornerSize
+import androidx.compose.foundation.shape.CutCornerShape
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.foundation.shape.ZeroCornerSize
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.LinearGradient
diff --git a/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt b/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt
index 4ddf89a4..a4101b8 100644
--- a/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt
+++ b/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt
@@ -19,8 +19,8 @@
 import androidx.ui.core.AbsoluteAlignment
 import androidx.ui.core.Alignment
 import androidx.compose.foundation.Border
-import androidx.compose.foundation.shape.corner.CornerBasedShape
-import androidx.compose.foundation.shape.corner.CornerSize
+import androidx.compose.foundation.shape.CornerBasedShape
+import androidx.compose.foundation.shape.CornerSize
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.geometry.Size
 import androidx.compose.ui.graphics.Brush
