diff --git a/main.cpp b/main.cpp
index c85881ed5e4fa3c4ea93339e2de89694f2856c43..b61d742ec993146b57e7ee397fd0b051ac63141c 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,25 +1,20 @@
 #include <iostream>
 #include <osl/osl.h>
 
-osl_relation_p
-perforate(osl_relation_p r) {
-    /* first: add one dimension */
-    std::cout << "extending to " << r->nb_output_dims+1 << "\n";
-    auto n = osl_relation_extend_output(r, r->nb_output_dims+1);
-
-    /* second: find new colum */
-    auto row = n->m[n->nb_rows-1];
-    int col = 0;
-    for(; osl_int_get_si(n->precision, row[col]) == 0 && col < n->nb_rows; col++) { }
-
-    /* third: set equal, iterator -1, new thing 2 */
-    osl_int_set_si(n->precision, &row[col], 2);
-    osl_int_set_si(n->precision, &row[1], -1);
-    osl_relation_dump(stdout, n);
-
-    int x = osl_int_get_si(r->precision, row[col]);
-    std::cout << "here is x: " << x << "\n";
-    return n;
+void
+perforate(osl_relation_p rel) {
+    int r = rel->nb_rows;
+    int c = rel->nb_columns-2;
+
+    osl_relation_insert_blank_row(rel, r);
+    osl_relation_insert_blank_column(rel, c);
+    rel->nb_local_dims++;
+
+    auto row = rel->m[r];
+    osl_int_set_si(rel->precision, &row[c], 2);
+    osl_int_set_si(rel->precision, &row[1], -1);
+
+    osl_relation_dump(stdout, rel);
 }
 
 int main() {
@@ -38,10 +33,10 @@ int main() {
         auto d = s->domain;
         
         osl_relation_dump(stdout, s->domain);
-        auto n = perforate(d);
-        s->domain = n;
+        perforate(d);
+        //s->domain = n;
 
-        osl_relation_free(d);
+        //osl_relation_free(d);
 
     }