something like a framework