rewrite using latest organic-angel tooling, add tests