complete rewrite, v0.2.0