What are the best practices for structuring an automation framework to make it scalable and easy to maintain?