working on generalizing tooling