massive rewrite!
0.2.0