framework for it, probably abandoning