Understanding the flow of execution and debugging