basic structure for framework (untested)