separation of declaration and execution