diff --git a/extern/polymesh b/extern/polymesh
index 784b49ba7b1ffe0f30990a898757d33a0b79edef..cd4589aad58e4429311af9d63c2aadb9aeb4d1bd 160000
--- a/extern/polymesh
+++ b/extern/polymesh
@@ -1 +1 @@
-Subproject commit 784b49ba7b1ffe0f30990a898757d33a0b79edef
+Subproject commit cd4589aad58e4429311af9d63c2aadb9aeb4d1bd
diff --git a/tests/attributes/attribute-test.cc b/tests/attributes/attribute-test.cc
index c7a7c7459ce48fa3cffcde85c57336b41e306881..0af5afddda9f9e57e6a7a846f98103300aaa3eda 100644
--- a/tests/attributes/attribute-test.cc
+++ b/tests/attributes/attribute-test.cc
@@ -59,10 +59,10 @@ TEST_CASE("Attributes.Creation")
 
     {
         auto a0 = m.vertices().make_attribute<int>();
-        auto a1 = m.vertices().make_attribute_with_default(3);
+        auto a1 = m.vertices().make_attribute(3);
         auto a2 = m.vertices().make_attribute_from_data(std::vector<int>(3, 5));
-        auto a3 = m.vertices().make_attribute([](auto) { return 7; });
-        auto a4 = m.vertices().make_attribute([](auto) { return 11; });
+        auto a3 = m.vertices().map([](auto) { return 7; });
+        auto a4 = m.vertices().map([](auto) { return 11; });
         auto a5 = pm::vertex_attribute<int>(m);
         // TODO: auto a6 = pm::vertex_attribute(m, 13);
         auto a7 = pm::attribute<int>(m.vertices());
@@ -84,10 +84,10 @@ TEST_CASE("Attributes.Creation")
 
     {
         auto a0 = m.faces().make_attribute<int>();
-        auto a1 = m.faces().make_attribute_with_default(3);
+        auto a1 = m.faces().make_attribute(3);
         auto a2 = m.faces().make_attribute_from_data(std::vector<int>(3, 5));
-        auto a3 = m.faces().make_attribute([](auto) { return 7; });
-        auto a4 = m.faces().make_attribute([](auto) { return 11; });
+        auto a3 = m.faces().map([](auto) { return 7; });
+        auto a4 = m.faces().map([](auto) { return 11; });
         auto a5 = pm::face_attribute<int>(m);
         // TODO: auto a6 = pm::face_attribute(m, 13);
         auto a7 = pm::attribute<int>(m.faces());
@@ -106,10 +106,10 @@ TEST_CASE("Attributes.Creation")
 
     {
         auto a0 = m.edges().make_attribute<int>();
-        auto a1 = m.edges().make_attribute_with_default(3);
+        auto a1 = m.edges().make_attribute(3);
         auto a2 = m.edges().make_attribute_from_data(std::vector<int>(3, 5));
-        auto a3 = m.edges().make_attribute([](auto) { return 7; });
-        auto a4 = m.edges().make_attribute([](auto) { return 11; });
+        auto a3 = m.edges().map([](auto) { return 7; });
+        auto a4 = m.edges().map([](auto) { return 11; });
         auto a5 = pm::edge_attribute<int>(m);
         // TODO: auto a6 = pm::edge_attribute(m, 13);
         auto a7 = pm::attribute<int>(m.edges());
@@ -118,10 +118,10 @@ TEST_CASE("Attributes.Creation")
 
     {
         auto a0 = m.halfedges().make_attribute<int>();
-        auto a1 = m.halfedges().make_attribute_with_default(3);
+        auto a1 = m.halfedges().make_attribute(3);
         auto a2 = m.halfedges().make_attribute_from_data(std::vector<int>(3, 5));
-        auto a3 = m.halfedges().make_attribute([](auto) { return 7; });
-        auto a4 = m.halfedges().make_attribute([](auto) { return 11; });
+        auto a3 = m.halfedges().map([](auto) { return 7; });
+        auto a4 = m.halfedges().map([](auto) { return 11; });
         auto a5 = pm::halfedge_attribute<int>(m);
         // TODO: auto a6 = pm::halfedge_attribute(m, 13);
         auto a7 = pm::attribute<int>(m.halfedges());
@@ -210,13 +210,13 @@ TEST_CASE("Attributes.DefaultSemantic")
     m.vertices().add();
     m.vertices().add();
 
-    auto a = m.vertices().make_attribute_with_default(7);
+    auto a = m.vertices().make_attribute(7);
 
     CHECK(ll.vertex_attribute_count() == 1);
     for (auto v : m.vertices())
         CHECK(a[v] == 7);
 
-    auto b = m.vertices().make_attribute_with_default(9);
+    auto b = m.vertices().make_attribute(9);
 
     CHECK(ll.vertex_attribute_count() == 2);
     for (auto v : m.vertices())
@@ -255,8 +255,8 @@ TEST_CASE("Attributes.DefaultSemantic")
         CHECK(d[v] == 7);
     }
 
-    auto e = m.vertices().make_attribute_with_default(11);
-    auto f = m.vertices().make_attribute_with_default(13);
+    auto e = m.vertices().make_attribute(11);
+    auto f = m.vertices().make_attribute(13);
     c = std::move(f);
     CHECK(!f.is_valid());
 
@@ -407,13 +407,13 @@ TEST_CASE("Attributes.DefaultSemanticEdge")
     ll.alloc_edge();
     ll.alloc_edge();
 
-    auto a = m.edges().make_attribute_with_default(7);
+    auto a = m.edges().make_attribute(7);
 
     CHECK(ll.edge_attribute_count() == 1);
     for (auto e : m.edges())
         CHECK(a[e] == 7);
 
-    auto b = m.edges().make_attribute_with_default(9);
+    auto b = m.edges().make_attribute(9);
 
     CHECK(ll.edge_attribute_count() == 2);
     for (auto e : m.edges())
@@ -452,8 +452,8 @@ TEST_CASE("Attributes.DefaultSemanticEdge")
         CHECK(d[e] == 7);
     }
 
-    auto e = m.edges().make_attribute_with_default(11);
-    auto f = m.edges().make_attribute_with_default(13);
+    auto e = m.edges().make_attribute(11);
+    auto f = m.edges().make_attribute(13);
     c = std::move(f);
     CHECK(!f.is_valid());
 
diff --git a/tests/basics.cc b/tests/basics.cc
index bf9b6c1fad699f10d91b8031e5b7d9cb303b0a62..fc5ea311f81c93cf0218a7c7c8a7f487e41a2e61 100644
--- a/tests/basics.cc
+++ b/tests/basics.cc
@@ -73,7 +73,7 @@ TEST_CASE("PolyMesh, Properties")
     auto v2 = m.vertices().add();
     auto f = m.faces().add(v0, v1, v2);
 
-    auto pos = m.vertices().make_attribute_with_default(glm::vec3(7, 7, 7));
+    auto pos = m.vertices().make_attribute(glm::vec3(7, 7, 7));
     auto centroid = m.faces().make_attribute<glm::vec3>();
 
     CHECK(pos[v0] == glm::vec3(7));