Given a set of requirements, how would you structure a class hierarchy for a test automation framework?