diff --git a/kral.k b/kral.k
index ec8a86f3e70fcbcf836981fa7e07afeccdfdb041..9f38a4434c21a64f4960f205e48afc50810d1142 100644
--- a/kral.k
+++ b/kral.k
@@ -1,7 +1,37 @@
-w:{"/dev/stdout"0:x,"\r"}
+/stringify
+sd:`i!({$x})
+str:{sd[@x][x]}
+sd[`d]:{$x}
+sd[`c]:{"\"",x,"\""}
+sd[`s]:{,//"`",$x}
+sd[`m]:{`TODO}
+sd[`o]:{$x}
+sd[`p]:{$x}
+sd[`q]:{$x}
+sd[`r]:{$x}
+sd[`u]:{$x}
+sd[`v]:{$x}
+sd[`w]:{$x}
+sd[`e]:{$x}
+sd[`A]:{"(",|")",|1_,//{" ",str[x]}'[x]}
+sd[`I]:sd[`A]
+sd[`D]:sd[`A]
+sd[`C]:{,//x}
+sd[`S]:sd[`A] /{1_,//{,//" `",$x}'[x]}
+sd[`M]:{`TODO}
+w:{"/dev/stdout"0:str[x],"\r"}
+
+//stringify tests
+/wtest1:(5;2.5;"a";`b;`foo;d1;{x};{x+y}[;3];(*|:);(+/);(+:);(+);(/))
+/wtest2:{x,x,x}'[wtest]
+/wt1:{w[str[wtest1[x]]]}
+/wt2:{w[str[wtest2[x]]]}
+
+/process document
 p:0:"test.kn"
 k:{(0 1)~x?"%k"}
 ki:&k'[p]
 in:.'3_'p[ki]
-ins:{?[p;1+(x;x);,y]}
-c:{$[0=#ki;p;p:ins[*ki;*in];ki:1_ki;in:1_in;c[]]} /this is horrendous and doesn't work FIXME
+put:{?[x;1+(y;y);,z]}
+out:{$[0=#y;x;o[put[x;*y;*z];1+1_y;1_z]]}
+out[p;ki;in]
