code for dsls
add immutability
better naming and tutorial
start tutorial and reformat code