mostly done with new crate rework