diff --git a/morphisms/Makefile b/morphisms/Makefile
index 6526bf8..439499a 100644
--- a/morphisms/Makefile
+++ b/morphisms/Makefile
@@ -1,5 +1,5 @@
 LIB_DIR=$(shell pwd)/lib
-TARGETS=lib/libmorph_length-prefix.so lib/libmorph_posint.so test
+TARGETS=lib/libmorph_length-prefix.so lib/libmorph_posint.so
 
 all: $(TARGETS)
 
diff --git a/morphisms/include/morphisms/length-prefix.h b/morphisms/include/morphisms/length-prefix.h
index 1ce7346..d3eb76f 100644
--- a/morphisms/include/morphisms/length-prefix.h
+++ b/morphisms/include/morphisms/length-prefix.h
@@ -23,7 +23,6 @@ void length_prefix_uint8_array_dump(
     struct LengthPrefixUInt8Array const * data
 );
 
-
 /* UInt64 */
 
 struct LengthPrefixUInt64Array {
@@ -46,6 +45,25 @@ void length_prefix_uint64_array_dump(
     struct LengthPrefixUInt64Array const * data
 );
 
+/*
+ * Map
+ */
+int length_prefix_array_map_64_to_64(
+    int (*f) ( uint64_t const * restrict, uint64_t * restrict ),
+    struct LengthPrefixUInt64Array const * restrict src,
+    struct LengthPrefixUInt64Array * restrict dst
+);
+int length_prefix_array_map_8_to_64(
+    int (*f) ( uint8_t const * restrict, uint64_t * restrict ),
+    struct LengthPrefixUInt8Array const * restrict src,
+    struct LengthPrefixUInt64Array * restrict dst
+);
+int length_prefix_array_map_64_to_8(
+    int (*f) ( uint64_t const * restrict, uint8_t * restrict ),
+    struct LengthPrefixUInt64Array const * restrict src,
+    struct LengthPrefixUInt8Array * restrict dst
+);
+
 
 /*
  * Morphisms
diff --git a/morphisms/include/morphisms/posint.h b/morphisms/include/morphisms/posint.h
index 3c96136..8c458da 100644
--- a/morphisms/include/morphisms/posint.h
+++ b/morphisms/include/morphisms/posint.h
@@ -3,22 +3,22 @@
 #include <morphisms/length-prefix.h>
 
 int morph_digit_as_char_to_uint8(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint8_t const * restrict src,
     uint8_t * restrict dst
 );
 int morph_digit_as_char_to_uint64(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint8_t const * restrict src,
     uint64_t * restrict dst
 );
 int morph_digit_as_uint8_to_char(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint8_t const * restrict src,
     uint8_t * restrict dst
 );
 int morph_digit_as_uint64_to_char(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint64_t const * restrict src,
     uint8_t * restrict dst
 );
diff --git a/morphisms/posint-dec-to-hex-generated.c b/morphisms/posint-dec-to-hex-generated.c
index f1aa7cf..a942e66 100644
--- a/morphisms/posint-dec-to-hex-generated.c
+++ b/morphisms/posint-dec-to-hex-generated.c
@@ -22,10 +22,12 @@ int main() {
     {
         struct LengthPrefixUInt8Array * src = (void*) bufB;
         struct LengthPrefixUInt64Array * dst = (void*) bufA;
-
+        length_prefix_array_map_8_to_64( morph_digit_as_char_to_uint64, src, dst );
+/*
         dst->len = src->len;
         for( uint64_t i = 0; i < src->len; ++i )
             morph_digit_as_char_to_uint64( &src->items[i], &dst->items[i] );
+*/
     }
 
     // morph to
@@ -63,9 +65,12 @@ int main() {
         struct LengthPrefixUInt64Array * src = (void*) bufB;
         struct LengthPrefixUInt8Array * dst = (void*) bufA;
 
+        length_prefix_array_map_64_to_8( morph_digit_as_uint64_to_char, src, dst );
+/*
         dst->len = src->len;
         for( uint64_t i = 0; i < src->len; ++i )
             morph_digit_as_uint64_to_char( &src->items[i], &dst->items[i] );
+*/
     }
 
     // morph to
diff --git a/morphisms/src/length-prefix.c b/morphisms/src/length-prefix.c
index 12f6234..32029bf 100644
--- a/morphisms/src/length-prefix.c
+++ b/morphisms/src/length-prefix.c
@@ -28,6 +28,51 @@ int length_prefix_uint64_array_reverse(
     return 0;
 }
 
+int length_prefix_array_map_64_to_64(
+    int (*f) ( uint64_t const * restrict, uint64_t * restrict ),
+    struct LengthPrefixUInt64Array const * restrict src,
+    struct LengthPrefixUInt64Array * restrict dst
+) {
+    dst->len = src->len;
+    for( uint64_t i = 0; i < src->len; ++i ) {
+        int result = f( &src->items[i], &dst->items[i] );
+        if( result ) {
+            return result;
+        }
+    }
+    return 0;
+}
+
+int length_prefix_array_map_8_to_64(
+    int (*f) ( uint8_t const * restrict, uint64_t * restrict ),
+    struct LengthPrefixUInt8Array const * restrict src,
+    struct LengthPrefixUInt64Array * restrict dst
+) {
+    dst->len = src->len;
+    for( uint64_t i = 0; i < src->len; ++i ) {
+        int result = f( &src->items[i], &dst->items[i] );
+        if( result ) {
+            return result;
+        }
+    }
+    return 0;
+}
+
+int length_prefix_array_map_64_to_8(
+    int (*f) ( uint64_t const * restrict, uint8_t * restrict ),
+    struct LengthPrefixUInt64Array const * restrict src,
+    struct LengthPrefixUInt8Array * restrict dst
+) {
+    dst->len = src->len;
+    for( uint64_t i = 0; i < src->len; ++i ) {
+        int result = f( &src->items[i], &dst->items[i] );
+        if( result ) {
+            return result;
+        }
+    }
+    return 0;
+}
+
 void length_prefix_uint64_array_dump(
     struct LengthPrefixUInt64Array const * data
 ) {
diff --git a/morphisms/src/posint.c b/morphisms/src/posint.c
index 32503c8..83cf6be 100644
--- a/morphisms/src/posint.c
+++ b/morphisms/src/posint.c
@@ -2,7 +2,7 @@
 #include <morphisms/length-prefix.h>
 
 int morph_digit_as_char_to_uint8(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint8_t const * restrict src,
     uint8_t * restrict dst
 ) {
@@ -19,15 +19,15 @@ int morph_digit_as_char_to_uint8(
 }
 
 int morph_digit_as_char_to_uint64(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint8_t const * restrict src,
     uint64_t * restrict dst
 ) {
-    return morph_digit_as_char_to_uint8(radix, src, dst);
+    return morph_digit_as_char_to_uint8(src, (void*)dst);
 }
 
 int morph_digit_as_uint8_to_char(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint8_t const * restrict src,
     uint8_t * restrict dst
 ) {
@@ -42,11 +42,11 @@ int morph_digit_as_uint8_to_char(
 }
 
 int morph_digit_as_uint64_to_char(
-    uint64_t const radix,
+    //uint64_t const radix,
     uint64_t const * restrict src,
     uint8_t * restrict dst
 ) {
-    return morph_digit_as_uint8_to_char(radix, src, dst);
+    return morph_digit_as_uint8_to_char((void*)src, dst);
 }
 
 /* switches endianness by reversing the digit sequence