write a framework