a simple framework