wip: migrate to crate