complete rewrite
v1.0.0