this is the first draft of this framework (working)