diff --git a/samples/cblas/TestBlas.java b/samples/cblas/TestBlas.java
index 5d2ea063..904e4716 100644
--- a/samples/cblas/TestBlas.java
+++ b/samples/cblas/TestBlas.java
@@ -53,7 +53,7 @@ public static void main(String[] args) {
         alpha = 1;
         beta = 0;
 
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var a = arena.allocateArray(C_DOUBLE,
                 1.0, 2.0, 3.0, 4.0,
                 1.0, 1.0, 1.0, 1.0,
diff --git a/samples/dlopen/Dlopen.java b/samples/dlopen/Dlopen.java
index 48b7e104..5f88b134 100644
--- a/samples/dlopen/Dlopen.java
+++ b/samples/dlopen/Dlopen.java
@@ -39,17 +39,17 @@
 public class Dlopen {
     // implementation of Symbol lookup that loads a given shared object using dlopen
     // and looks up symbols using dlsym
-    private static Function<String, Optional<MemorySegment>> lookup(String libraryName, SegmentScope scope) {
-        try (Arena libArena = Arena.openConfined()) {
+    private static Function<String, Optional<MemorySegment>> lookup(String libraryName, Arena arena) {
+        try (Arena libArena = Arena.ofConfined()) {
             var handleAddr = dlopen(libArena.allocateUtf8String(libraryName), RTLD_LOCAL());
             if (handleAddr.equals(MemorySegment.NULL)) {
                 throw new IllegalArgumentException("Cannot find library: " + libraryName);
             }
-            var handle = MemorySegment.ofAddress(handleAddr.address(), 0, scope,
+            var handle = MemorySegment.ofAddress(handleAddr.address(), 0, arena,
                 () -> dlclose(handleAddr));
             return name -> {
-                try (var arena = Arena.openConfined()) {
-                    var addr = dlsym(handle, arena.allocateUtf8String(name));
+                try (var newArena = Arena.ofConfined()) {
+                    var addr = dlsym(handle, newArena.allocateUtf8String(name));
                     return addr.equals(MemorySegment.NULL) ?
                         Optional.empty() : Optional.of(addr);
                 }
@@ -60,8 +60,8 @@ private static Function<String, Optional<MemorySegment>> lookup(String libraryNa
     public static void main(String[] args) throws Throwable {
         var arg = args.length > 0? args[0] : "Java";
         var libName = "libhello.dylib";
-        try (var arena = Arena.openConfined()) {
-            var symLookup = lookup(libName, arena.scope());
+        try (var arena = Arena.ofConfined()) {
+            var symLookup = lookup(libName, arena);
 
             var linker = Linker.nativeLinker();
             // get method handle for a function from helloLIb
diff --git a/samples/lapack/TestLapack.java b/samples/lapack/TestLapack.java
index 1c9507a9..d89291d6 100644
--- a/samples/lapack/TestLapack.java
+++ b/samples/lapack/TestLapack.java
@@ -39,7 +39,7 @@ public class TestLapack {
     public static void main(String[] args) {
 
         /* Locals */
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var A = arena.allocateArray(C_DOUBLE,
                     1, 2, 3, 4, 5, 1, 3, 5, 2, 4, 1, 4, 2, 5, 3
             );
diff --git a/samples/libclang/ASTPrinter.java b/samples/libclang/ASTPrinter.java
index cd31764d..7037fcb1 100644
--- a/samples/libclang/ASTPrinter.java
+++ b/samples/libclang/ASTPrinter.java
@@ -47,7 +47,7 @@ public static void main(String[] args) {
             System.exit(1);
         }
 
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             // parse the C header/source passed from the command line
             var index = clang_createIndex(0, 0);
             var tu = clang_parseTranslationUnit(index, arena.allocateUtf8String(args[0]),
@@ -75,7 +75,7 @@ public static void main(String[] args) {
                 level[0]--;
 
                 return CXChildVisit_Continue();
-            }, arena.scope());
+            }, arena);
 
             // get the AST root and visit it
             var root = clang_getTranslationUnitCursor(arena, tu);
diff --git a/samples/libcurl/CurlMain.java b/samples/libcurl/CurlMain.java
index cca175de..4d7a9e49 100644
--- a/samples/libcurl/CurlMain.java
+++ b/samples/libcurl/CurlMain.java
@@ -41,7 +41,7 @@ public static void main(String[] args) {
        curl_global_init(CURL_GLOBAL_DEFAULT());
        var curl = curl_easy_init();
        if(!curl.equals(NULL)) {
-           try (var arena = Arena.openConfined()) {
+           try (var arena = Arena.ofConfined()) {
                var url = arena.allocateUtf8String(urlStr);
                curl_easy_setopt(curl, CURLOPT_URL(), url.address());
                int res = curl_easy_perform(curl);
diff --git a/samples/libffmpeg/LibffmpegMain.java b/samples/libffmpeg/LibffmpegMain.java
index 479c87f0..2209577e 100644
--- a/samples/libffmpeg/LibffmpegMain.java
+++ b/samples/libffmpeg/LibffmpegMain.java
@@ -62,7 +62,7 @@ public static void main(String[] args) {
     }
 
     private static class ArenaCleanup implements AutoCloseable {
-        private Arena arena = Arena.openConfined();
+        private Arena arena = Arena.ofConfined();
         private final List<Runnable> preCloseActions = new ArrayList<>();
 
         void addCleanup(Runnable runnable) {
@@ -232,7 +232,7 @@ private static Exit run(String[] args) {
                         // Save the frame to disk
                         if (++i <= NUM_FRAMES_TO_CAPTURE) {
                             try {
-                                saveFrame(pFrameRGB, arena.scope(), width, height, i);
+                                saveFrame(pFrameRGB, arena, width, height, i);
                             } catch (Exception exp) {
                                 exp.printStackTrace();
                                 return new Exit("save frame failed for frame " + i, 1);
@@ -274,7 +274,7 @@ private static Exit run(String[] args) {
         return new Exit("Goodbye!", 0);
     }
 
-    private static void saveFrame(MemorySegment frameRGB, SegmentScope scope,
+    private static void saveFrame(MemorySegment frameRGB, Arena arena,
             int width, int height, int iFrame)
             throws IOException {
         var header = String.format("P6\n%d %d\n255\n", width, height);
@@ -290,7 +290,7 @@ private static void saveFrame(MemorySegment frameRGB, SegmentScope scope,
             // Write pixel data
             for (int y = 0; y < height; y++) {
                 // frameRGB.data[0] + y*frameRGB.linesize[0] is the pointer. And 3*width size of data
-                var pixelArray = MemorySegment.ofAddress(pdata.address() + y*linesize, 3*width, scope);
+                var pixelArray = MemorySegment.ofAddress(pdata.address() + y*linesize, 3*width, arena);
                 // dump the pixel byte buffer to file
                 os.write(pixelArray.toArray(C_CHAR));
             }
diff --git a/samples/libgit2/GitClone.java b/samples/libgit2/GitClone.java
index dfeb10e0..71fe3a9d 100644
--- a/samples/libgit2/GitClone.java
+++ b/samples/libgit2/GitClone.java
@@ -42,7 +42,7 @@ public static void main(String[] args) {
               System.exit(1);
           }
           git_libgit2_init();
-          try (var arena = Arena.openConfined()) {
+          try (var arena = Arena.ofConfined()) {
               var repo = arena.allocate(C_POINTER);
               var url = arena.allocateUtf8String(args[0]);
               var path = arena.allocateUtf8String(args[1]);
diff --git a/samples/libjimage/JImageFile.java b/samples/libjimage/JImageFile.java
index dce4503a..8161915f 100644
--- a/samples/libjimage/JImageFile.java
+++ b/samples/libjimage/JImageFile.java
@@ -46,7 +46,7 @@ public static void main(String[] args) {
            System.err.println(modPath + " not found, please check if your java.home");
            return;
         }
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var jintResPtr = arena.allocate(jint);
             var moduleFilePath = arena.allocateUtf8String(javaHome + "/lib/modules");
             var jimageFile = JIMAGE_Open(moduleFilePath, jintResPtr);
@@ -68,7 +68,7 @@ public static void main(String[] args) {
                    System.out.println("package " + package_name.getUtf8String(0));
                    System.out.println("name " + name.getUtf8String(0));
                    return 1;
-                }, arena.scope());
+                }, arena);
 
             JIMAGE_ResourceIterator(jimageFile, visitor, NULL);
 
diff --git a/samples/libjimage/org/openjdk/Constants$root.java b/samples/libjimage/org/openjdk/Constants$root.java
index 08af0bf9..c051d706 100644
--- a/samples/libjimage/org/openjdk/Constants$root.java
+++ b/samples/libjimage/org/openjdk/Constants$root.java
@@ -19,7 +19,7 @@ final class Constants$root {
     static final OfLong C_LONG_LONG$LAYOUT = JAVA_LONG;
     static final OfFloat C_FLOAT$LAYOUT = JAVA_FLOAT;
     static final OfDouble C_DOUBLE$LAYOUT = JAVA_DOUBLE;
-    static final OfAddress C_POINTER$LAYOUT = ADDRESS.withBitAlignment(64).asUnbounded();
+    static final OfAddress C_POINTER$LAYOUT = ADDRESS.withBitAlignment(64).withTargetLayout(MemoryLayout.sequenceLayout(Constants$root.C_CHAR$LAYOUT));
 }
 
 
diff --git a/samples/libjimage/org/openjdk/JImageClose_t.java b/samples/libjimage/org/openjdk/JImageClose_t.java
index f77e4a64..48d65590 100644
--- a/samples/libjimage/org/openjdk/JImageClose_t.java
+++ b/samples/libjimage/org/openjdk/JImageClose_t.java
@@ -15,10 +15,10 @@
 public interface JImageClose_t {
 
     void apply(java.lang.foreign.MemorySegment jimage);
-    static MemorySegment allocate(JImageClose_t fi, SegmentScope scope) {
+    static MemorySegment allocate(JImageClose_t fi, Arena scope) {
         return RuntimeHelper.upcallStub(JImageClose_t.class, fi, constants$0.JImageClose_t$FUNC, scope);
     }
-    static JImageClose_t ofAddress(MemorySegment addr, SegmentScope scope) {
+    static JImageClose_t ofAddress(MemorySegment addr, Arena scope) {
         MemorySegment symbol = MemorySegment.ofAddress(addr.address(), 0, scope);
         return (java.lang.foreign.MemorySegment _jimage) -> {
             try {
diff --git a/samples/libjimage/org/openjdk/JImageFindResource_t.java b/samples/libjimage/org/openjdk/JImageFindResource_t.java
index b1466c2c..d4fd2821 100644
--- a/samples/libjimage/org/openjdk/JImageFindResource_t.java
+++ b/samples/libjimage/org/openjdk/JImageFindResource_t.java
@@ -15,10 +15,10 @@
 public interface JImageFindResource_t {
 
     long apply(java.lang.foreign.MemorySegment jimage, java.lang.foreign.MemorySegment module_name, java.lang.foreign.MemorySegment version, java.lang.foreign.MemorySegment name, java.lang.foreign.MemorySegment size);
-    static MemorySegment allocate(JImageFindResource_t fi, SegmentScope scope) {
+    static MemorySegment allocate(JImageFindResource_t fi, Arena scope) {
         return RuntimeHelper.upcallStub(JImageFindResource_t.class, fi, constants$1.JImageFindResource_t$FUNC, scope);
     }
-    static JImageFindResource_t ofAddress(MemorySegment addr, SegmentScope scope) {
+    static JImageFindResource_t ofAddress(MemorySegment addr, Arena scope) {
         MemorySegment symbol = MemorySegment.ofAddress(addr.address(), 0, scope);
         return (java.lang.foreign.MemorySegment _jimage, java.lang.foreign.MemorySegment _module_name, java.lang.foreign.MemorySegment _version, java.lang.foreign.MemorySegment _name, java.lang.foreign.MemorySegment _size) -> {
             try {
diff --git a/samples/libjimage/org/openjdk/JImageGetResource_t.java b/samples/libjimage/org/openjdk/JImageGetResource_t.java
index d39366a5..c253fe37 100644
--- a/samples/libjimage/org/openjdk/JImageGetResource_t.java
+++ b/samples/libjimage/org/openjdk/JImageGetResource_t.java
@@ -15,10 +15,10 @@
 public interface JImageGetResource_t {
 
     long apply(java.lang.foreign.MemorySegment jimage, long location, java.lang.foreign.MemorySegment buffer, long size);
-    static MemorySegment allocate(JImageGetResource_t fi, SegmentScope scope) {
+    static MemorySegment allocate(JImageGetResource_t fi, Arena scope) {
         return RuntimeHelper.upcallStub(JImageGetResource_t.class, fi, constants$2.JImageGetResource_t$FUNC, scope);
     }
-    static JImageGetResource_t ofAddress(MemorySegment addr, SegmentScope scope) {
+    static JImageGetResource_t ofAddress(MemorySegment addr, Arena scope) {
         MemorySegment symbol = MemorySegment.ofAddress(addr.address(), 0, scope);
         return (java.lang.foreign.MemorySegment _jimage, long _location, java.lang.foreign.MemorySegment _buffer, long _size) -> {
             try {
diff --git a/samples/libjimage/org/openjdk/JImageOpen_t.java b/samples/libjimage/org/openjdk/JImageOpen_t.java
index cb2f9e69..a0072c36 100644
--- a/samples/libjimage/org/openjdk/JImageOpen_t.java
+++ b/samples/libjimage/org/openjdk/JImageOpen_t.java
@@ -15,10 +15,10 @@
 public interface JImageOpen_t {
 
     java.lang.foreign.MemorySegment apply(java.lang.foreign.MemorySegment jimage, java.lang.foreign.MemorySegment package_name);
-    static MemorySegment allocate(JImageOpen_t fi, SegmentScope scope) {
+    static MemorySegment allocate(JImageOpen_t fi, Arena scope) {
         return RuntimeHelper.upcallStub(JImageOpen_t.class, fi, constants$0.JImageOpen_t$FUNC, scope);
     }
-    static JImageOpen_t ofAddress(MemorySegment addr, SegmentScope scope) {
+    static JImageOpen_t ofAddress(MemorySegment addr, Arena scope) {
         MemorySegment symbol = MemorySegment.ofAddress(addr.address(), 0, scope);
         return (java.lang.foreign.MemorySegment _jimage, java.lang.foreign.MemorySegment _package_name) -> {
             try {
diff --git a/samples/libjimage/org/openjdk/JImagePackageToModule_t.java b/samples/libjimage/org/openjdk/JImagePackageToModule_t.java
index f173b378..b9c1d1b5 100644
--- a/samples/libjimage/org/openjdk/JImagePackageToModule_t.java
+++ b/samples/libjimage/org/openjdk/JImagePackageToModule_t.java
@@ -15,10 +15,10 @@
 public interface JImagePackageToModule_t {
 
     java.lang.foreign.MemorySegment apply(java.lang.foreign.MemorySegment jimage, java.lang.foreign.MemorySegment package_name);
-    static MemorySegment allocate(JImagePackageToModule_t fi, SegmentScope scope) {
+    static MemorySegment allocate(JImagePackageToModule_t fi, Arena scope) {
         return RuntimeHelper.upcallStub(JImagePackageToModule_t.class, fi, constants$1.JImagePackageToModule_t$FUNC, scope);
     }
-    static JImagePackageToModule_t ofAddress(MemorySegment addr, SegmentScope scope) {
+    static JImagePackageToModule_t ofAddress(MemorySegment addr, Arena scope) {
         MemorySegment symbol = MemorySegment.ofAddress(addr.address(), 0, scope);
         return (java.lang.foreign.MemorySegment _jimage, java.lang.foreign.MemorySegment _package_name) -> {
             try {
diff --git a/samples/libjimage/org/openjdk/JImageResourceIterator_t.java b/samples/libjimage/org/openjdk/JImageResourceIterator_t.java
index 76da71c9..383f2c9d 100644
--- a/samples/libjimage/org/openjdk/JImageResourceIterator_t.java
+++ b/samples/libjimage/org/openjdk/JImageResourceIterator_t.java
@@ -15,10 +15,10 @@
 public interface JImageResourceIterator_t {
 
     void apply(java.lang.foreign.MemorySegment jimage, java.lang.foreign.MemorySegment visitor, java.lang.foreign.MemorySegment arg);
-    static MemorySegment allocate(JImageResourceIterator_t fi, SegmentScope scope) {
+    static MemorySegment allocate(JImageResourceIterator_t fi, Arena scope) {
         return RuntimeHelper.upcallStub(JImageResourceIterator_t.class, fi, constants$3.JImageResourceIterator_t$FUNC, scope);
     }
-    static JImageResourceIterator_t ofAddress(MemorySegment addr, SegmentScope scope) {
+    static JImageResourceIterator_t ofAddress(MemorySegment addr, Arena scope) {
         MemorySegment symbol = MemorySegment.ofAddress(addr.address(), 0, scope);
         return (java.lang.foreign.MemorySegment _jimage, java.lang.foreign.MemorySegment _visitor, java.lang.foreign.MemorySegment _arg) -> {
             try {
diff --git a/samples/libjimage/org/openjdk/JImageResourceVisitor_t.java b/samples/libjimage/org/openjdk/JImageResourceVisitor_t.java
index 0c7ea027..695a6597 100644
--- a/samples/libjimage/org/openjdk/JImageResourceVisitor_t.java
+++ b/samples/libjimage/org/openjdk/JImageResourceVisitor_t.java
@@ -15,10 +15,10 @@
 public interface JImageResourceVisitor_t {
 
     int apply(java.lang.foreign.MemorySegment jimage, java.lang.foreign.MemorySegment module_name, java.lang.foreign.MemorySegment version, java.lang.foreign.MemorySegment package_, java.lang.foreign.MemorySegment name, java.lang.foreign.MemorySegment extension, java.lang.foreign.MemorySegment arg);
-    static MemorySegment allocate(JImageResourceVisitor_t fi, SegmentScope scope) {
+    static MemorySegment allocate(JImageResourceVisitor_t fi, Arena scope) {
         return RuntimeHelper.upcallStub(JImageResourceVisitor_t.class, fi, constants$2.JImageResourceVisitor_t$FUNC, scope);
     }
-    static JImageResourceVisitor_t ofAddress(MemorySegment addr, SegmentScope scope) {
+    static JImageResourceVisitor_t ofAddress(MemorySegment addr, Arena scope) {
         MemorySegment symbol = MemorySegment.ofAddress(addr.address(), 0, scope);
         return (java.lang.foreign.MemorySegment _jimage, java.lang.foreign.MemorySegment _module_name, java.lang.foreign.MemorySegment _version, java.lang.foreign.MemorySegment _package_, java.lang.foreign.MemorySegment _name, java.lang.foreign.MemorySegment _extension, java.lang.foreign.MemorySegment _arg) -> {
             try {
diff --git a/samples/libjimage/org/openjdk/RuntimeHelper.java b/samples/libjimage/org/openjdk/RuntimeHelper.java
index 989e8436..7ee7fc43 100644
--- a/samples/libjimage/org/openjdk/RuntimeHelper.java
+++ b/samples/libjimage/org/openjdk/RuntimeHelper.java
@@ -7,7 +7,7 @@
 import java.lang.foreign.SymbolLookup;
 import java.lang.foreign.MemoryLayout;
 import java.lang.foreign.MemorySegment;
-import java.lang.foreign.SegmentScope;
+import java.lang.foreign.Arena;
 import java.lang.foreign.SegmentAllocator;
 import java.lang.foreign.ValueLayout;
 import java.lang.invoke.MethodHandle;
@@ -32,7 +32,7 @@ final class RuntimeHelper {
     private static final SegmentAllocator THROWING_ALLOCATOR = (x, y) -> { throw new AssertionError("should not reach here"); };
 
     final static SegmentAllocator CONSTANT_ALLOCATOR =
-            (size, align) -> MemorySegment.allocateNative(size, align, SegmentScope.auto());
+            (size, align) -> Arena.ofAuto().allocate(size, align);
 
     static {
         // manual change
@@ -45,7 +45,8 @@ final class RuntimeHelper {
         } else {
             libPath = "/lib/libjimage.so"; // some Unix
         }
-        SymbolLookup loaderLookup = SymbolLookup.libraryLookup(libPath, SegmentScope.global());
+        SymbolLookup loaderLookup = SymbolLookup.libraryLookup(libPath, Arena.global());
+
         SYMBOL_LOOKUP = name -> loaderLookup.find(name).or(() -> LINKER.defaultLookup().find(name));
     }
 
@@ -60,7 +61,9 @@ static <T> T requireNonNull(T obj, String symbolName) {
     }
 
     static MemorySegment lookupGlobalVariable(String name, MemoryLayout layout) {
-        return SYMBOL_LOOKUP.find(name).map(symbol -> MemorySegment.ofAddress(symbol.address(), layout.byteSize(), symbol.scope())).orElse(null);
+        return SYMBOL_LOOKUP.find(name)
+                .map(s -> s.asUnbounded().asSlice(0, layout))
+                .orElse(null);
     }
 
     static MethodHandle downcallHandle(String name, FunctionDescriptor fdesc) {
@@ -79,7 +82,7 @@ static MethodHandle downcallHandleVariadic(String name, FunctionDescriptor fdesc
                 orElse(null);
     }
 
-    static <Z> MemorySegment upcallStub(Class<Z> fi, Z z, FunctionDescriptor fdesc, SegmentScope scope) {
+    static <Z> MemorySegment upcallStub(Class<Z> fi, Z z, FunctionDescriptor fdesc, Arena scope) {
         try {
             MethodHandle handle = MH_LOOKUP.findVirtual(fi, "apply", fdesc.toMethodType());
             handle = handle.bindTo(z);
@@ -89,7 +92,7 @@ static <Z> MemorySegment upcallStub(Class<Z> fi, Z z, FunctionDescriptor fdesc,
         }
     }
 
-    static MemorySegment asArray(MemorySegment addr, MemoryLayout layout, int numElements, SegmentScope scope) {
+    static MemorySegment asArray(MemorySegment addr, MemoryLayout layout, int numElements, Arena scope) {
          return MemorySegment.ofAddress(addr.address(), numElements * layout.byteSize(), scope);
     }
 
diff --git a/samples/libproc/LibprocMain.java b/samples/libproc/LibprocMain.java
index f8b454ba..629ebdf2 100644
--- a/samples/libproc/LibprocMain.java
+++ b/samples/libproc/LibprocMain.java
@@ -40,7 +40,7 @@ public class LibprocMain {
     private static final int NAME_BUF_MAX = 256;
 
     public static void main(String[] args) {
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             // get the number of processes
             int numPids = proc_listallpids(NULL, 0);
             // allocate an array
diff --git a/samples/libzstd/LibzstdMain.java b/samples/libzstd/LibzstdMain.java
index 881c31fe..6e2eabbb 100644
--- a/samples/libzstd/LibzstdMain.java
+++ b/samples/libzstd/LibzstdMain.java
@@ -83,7 +83,7 @@ public static void main(String[] args) {
         System.out.println(TEXT);
         System.out.println();
 
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             // Compress
             var uncompressedText = arena.allocateUtf8String(TEXT);
             // At least, the compressed text should not be larger than the uncompressed text.
diff --git a/samples/lp_solve/LpSolveDemo.java b/samples/lp_solve/LpSolveDemo.java
index 86f23686..6a9b1e7a 100644
--- a/samples/lp_solve/LpSolveDemo.java
+++ b/samples/lp_solve/LpSolveDemo.java
@@ -47,7 +47,7 @@ public static void main(String[] args) {
              return;
         }
 
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var colno = arena.allocateArray(C_INT, Ncol);
             var row = arena.allocateArray(C_DOUBLE, Ncol);
 
diff --git a/samples/pcre2/PcreCheck.java b/samples/pcre2/PcreCheck.java
index 367d570b..a661e760 100644
--- a/samples/pcre2/PcreCheck.java
+++ b/samples/pcre2/PcreCheck.java
@@ -40,7 +40,7 @@ public static void main(String[] args) {
       System.exit(1);
     }
 
-    try (var arena = Arena.openConfined()) {
+    try (var arena = Arena.ofConfined()) {
       // given regex to C string
       var pattern = arena.allocateUtf8String(args[0]);
       var patternSize = args[0].length();
diff --git a/samples/python3/PythonMain.java b/samples/python3/PythonMain.java
index 7638ca94..d605c236 100644
--- a/samples/python3/PythonMain.java
+++ b/samples/python3/PythonMain.java
@@ -41,7 +41,7 @@ public static void main(String[] args) {
         String script = "print(sum([33, 55, 66])); print('Hello from Python!')\n";
 
         Py_Initialize();
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var str = arena.allocateUtf8String(script);
             PyRun_SimpleStringFlags(str, NULL);
             Py_Finalize();
diff --git a/samples/readline/Readline.java b/samples/readline/Readline.java
index b0434099..441722aa 100644
--- a/samples/readline/Readline.java
+++ b/samples/readline/Readline.java
@@ -36,7 +36,7 @@
 
 public class Readline {
     public static void main(String[] args) {
-       try (var arena = Arena.openConfined()) {
+       try (var arena = Arena.ofConfined()) {
             var url = arena.allocateUtf8String("name? ");
 
             // call "readline" API
diff --git a/samples/sqlite/SqliteMain.java b/samples/sqlite/SqliteMain.java
index db6e8367..99efc593 100644
--- a/samples/sqlite/SqliteMain.java
+++ b/samples/sqlite/SqliteMain.java
@@ -38,7 +38,7 @@
 
 public class SqliteMain {
    public static void main(String[] args) throws Exception {
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             // char** errMsgPtrPtr;
             var errMsgPtrPtr = arena.allocate(C_POINTER);
 
@@ -95,8 +95,8 @@ public static void main(String[] args) throws Exception {
             var callback = sqlite3_exec$callback.allocate((a, argc, argv, columnNames) -> {
                 System.out.println("Row num: " + rowNum[0]++);
                 System.out.println("numColumns = " + argc);
-                var argv_seg = MemorySegment.ofAddress(argv.address(), C_POINTER.byteSize() * argc, arena.scope());
-                var columnNames_seg = MemorySegment.ofAddress(columnNames.address(), C_POINTER.byteSize() * argc, arena.scope());
+                var argv_seg = MemorySegment.ofAddress(argv.address(), C_POINTER.byteSize() * argc, arena);
+                var columnNames_seg = MemorySegment.ofAddress(columnNames.address(), C_POINTER.byteSize() * argc, arena);
                 for (int i = 0; i < argc; i++) {
                      String name = columnNames_seg.getAtIndex(C_POINTER, i).getUtf8String(0);
                      String value = argv_seg.getAtIndex(C_POINTER, i).getUtf8String(0);
@@ -104,7 +104,7 @@ public static void main(String[] args) throws Exception {
                      System.out.printf("%s = %s\n", name, value);
                 }
                 return 0;
-            }, arena.scope());
+            }, arena);
 
             // select query
             sql = arena.allocateUtf8String("SELECT * FROM EMPLOYEE");
diff --git a/samples/tcl/TCLMain.java b/samples/tcl/TCLMain.java
index ba3cd057..17053b54 100644
--- a/samples/tcl/TCLMain.java
+++ b/samples/tcl/TCLMain.java
@@ -53,7 +53,7 @@ set name(last) "Turing"
             puts "Full name: $name(first) $name(last)"
         """;
 
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var str = arena.allocateUtf8String(script);
             Tcl_Eval(interp, str);
         }
diff --git a/samples/tensorflow/TensorflowLoadSavedModel.java b/samples/tensorflow/TensorflowLoadSavedModel.java
index e1ec2256..9c762d29 100644
--- a/samples/tensorflow/TensorflowLoadSavedModel.java
+++ b/samples/tensorflow/TensorflowLoadSavedModel.java
@@ -45,7 +45,7 @@ public static void main(String... args) throws Exception {
             System.exit(1);
         }
 
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var graph = TF_NewGraph();
             var status = TF_NewStatus();
             var sessionOpts = TF_NewSessionOptions();
diff --git a/samples/time/PanamaTime.java b/samples/time/PanamaTime.java
index ea28ce58..bc8aea46 100644
--- a/samples/time/PanamaTime.java
+++ b/samples/time/PanamaTime.java
@@ -36,7 +36,7 @@
 
 public class PanamaTime {
     public static void main(String[] args) {
-        try (var arena = Arena.openConfined()) {
+        try (var arena = Arena.ofConfined()) {
             var now = arena.allocate(C_LONG, System.currentTimeMillis() / 1000);
             MemorySegment time = tm.allocate(arena);
             localtime_r(now, time);