framework for procedural