diff --git a/examples/01-uint-example/.gitignore b/examples/01-uint-example/.gitignore
new file mode 100644
index 0000000..567609b
--- /dev/null
+++ b/examples/01-uint-example/.gitignore
@@ -0,0 +1 @@
+build/
diff --git a/examples/01-uint-example/main.c b/examples/01-uint-example/main.c
new file mode 100644
index 0000000..2db8422
--- /dev/null
+++ b/examples/01-uint-example/main.c
@@ -0,0 +1,14 @@
+#include "morphisms.h"
+
+int main(int argc, char* argv[]) {
+    if( argc > 1 ) {
+        uint64_t value;
+        demarshal( argv[1], &value );
+
+        uint64_t result = value * value;
+
+        char buf[256];
+        marshal( &result, buf );
+        printf("%s\n", buf);
+    }
+}
diff --git a/examples/01-uint-example/makefile b/examples/01-uint-example/makefile
new file mode 100644
index 0000000..528afbf
--- /dev/null
+++ b/examples/01-uint-example/makefile
@@ -0,0 +1,23 @@
+all: build/square
+.PHONY: build clean
+
+build:
+	mkdir -p build
+
+build/morphisms.h: build
+	ldmc \
+     -m "marshal: \
+	        ℕ ~ native.UInt64 \
+	    --> ℕ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>" \
+\
+     -m "demarshal:  \
+            ℕ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8> \
+	    --> ℕ ~ native.UInt64 " \
+\
+     >| build/morphisms.h
+
+build/square: build build/morphisms.h
+	gcc -Os -I../../morphisms/runtime/include/ -Ibuild main.c -o build/square
+
+clean:
+	rm build/ -rf