diff --git a/hwc3/ComposerClient.cpp b/hwc3/ComposerClient.cpp
index 4038b27..1becdb1 100644
--- a/hwc3/ComposerClient.cpp
+++ b/hwc3/ComposerClient.cpp
@@ -226,6 +226,13 @@
   return alpha->alpha;
 }
 
+std::optional<uint32_t> AidlToZOrder(const std::optional<ZOrder>& z_order) {
+  if (!z_order) {
+    return std::nullopt;
+  }
+  return z_order->z;
+}
+
 std::optional<LayerTransform> AidlToLayerTransform(
     const std::optional<ParcelableTransform>& aidl_transform) {
   if (!aidl_transform) {
@@ -519,12 +526,10 @@
   properties.alpha = AidlToAlpha(command.planeAlpha);
   properties.source_crop = AidlToFRect(command.sourceCrop);
   properties.transform = AidlToLayerTransform(command.transform);
+  properties.z_order = AidlToZOrder(command.z);
 
   layer->SetLayerProperties(properties);
 
-  if (command.z) {
-    ExecuteSetLayerZOrder(display_id, layer_wrapper, *command.z);
-  }
   if (command.brightness) {
     ExecuteSetLayerBrightness(display_id, layer_wrapper, *command.brightness);
   }
@@ -1219,15 +1224,6 @@
   }
 }
 
-void ComposerClient::ExecuteSetLayerZOrder(int64_t /*display_id*/,
-                                           HwcLayerWrapper& layer,
-                                           const ZOrder& z_order) {
-  auto err = Hwc2toHwc3Error(layer.layer->SetLayerZOrder(z_order.z));
-  if (err != hwc3::Error::kNone) {
-    cmd_result_writer_->AddError(err);
-  }
-}
-
 void ComposerClient::ExecuteSetLayerBrightness(
     int64_t /*display_id*/, HwcLayerWrapper& /*layer*/,
     const LayerBrightness& brightness) {
