Select Page

Category Selected: Top Picks

23 results Found


People also read

Blog

AI Agent Examples: Transforming Technology

Automation Testing
Artificial Intelligence

Talk to our Experts

Amazing clients who
trust us


poloatto
ABB
polaris
ooredo
stryker
mobility
How to Perform OTT Automation Testing on All Devices?

How to Perform OTT Automation Testing on All Devices?

Content is King is a very famous quote that we all would have heard on so many occasions. Though it applies to OTT platforms, there is no denying that user experience is also an integral part of an OTT platform’s success. It is important to note that the technical aspects of the OTT platform also have to be strong to ensure the best user experience as nobody will be willing to watch even the greatest content if it is constantly buffering and taking forever to respond to your action. The only way to ensure that the platform delivers the best user experience is by performing OTT testing. So in this blog, we will be seeing how to perform OTT Automation testing across major devices and see a conclusive checklist as well.

What is OTT Testing?

An OTT (Over the Top) service is any type of streaming service that delivers content over the internet. Though there is a wide range of OTT services such as WhatsApp, Skype, Zoom, and so on, our focus will be entirely on OTT media services such as Netflix, Amazon Prime, etc. So OTT testing can be defined as the process of performing robust tests to ensure the successful delivery of video content such as films or tv shows with the best user experience.

Did You Know?

A very fascinating aspect of OTT testing and Netflix is that Netflix developed its own testing tool called Chaos Monkey to test the resilience of its Amazon Web Services. The concept behind Chaos monkey was that it would intentionally disrupt the service by terminating key instances in production to see how well the other systems managed.

Netflix Chaos Monkey

But why is the OTT giant so much focused on testing? To answer this question, we would have to take a look back in time to find out how Netflix and other OTT services emerged.

The Emergence of OTT

The popularity of OTT services has skyrocketed over the roof this past decade. The pandemic only added more fuel to the flame as more and more people started consuming content on OTT platforms. This type of media consumption is actually very different from its predecessors and competition. For example, VCRs, CDs, and DVDs did not need any software or platform, or infrastructure from the vendor’s side. So the end-user experience was majorly dependent on the consumer side infrastructure. Likewise, the end-user experience varied from theatre to theatre. But OTT is very different from all these options as apart from providing the content, the user experience is purely dependent on their services as well.

Netflix is so popular that the name has become synonymous with the term OTT itself. But how was Netflix able to topple Blockbuster video, a company that was still generating $5.9 Billion annually in 2004? The answer is user experience. Blockbuster was making around 16% of its yearly income through late fees. No customer was happy with this working model. In fact, one of the co-founders of Netflix, Reed Hastings had decided to start Netflix after receiving a $40 fine from Blockbuster. So Netflix was born as a company that did not have any late fees.

The User-Experience Factor

You might be wondering how is this story relevant to OTT testing. To answer that question, let’s take a look at the very first Netflix original series, House of Cards. Netflix revolutionized how content will be consumed by releasing the entire series in one shot instead of following the regular weekly one-episode plan. This meant that when the end-user wanted to watch the next episode, they could. The users also had the liberty to watch the show they wanted when they wanted instead of depending on the network’s schedule. So ultimately Netflix made sure that the end-user never left their platform using the user experience they had crafted. People started binge-watching content and Netflix’s strong user experience ensured that it happened.

Now that the infinity scrolling feature for video content has become widely popular, Netflix has introduced a feature called ‘Short Laughs’ that showcases short clips from their best shows. Netflix takes their user experience very seriously as they even developed a Chaos monkey to test their platform’s resilience against vulnerabilities. So if Netflix, the most successful OTT service provider is so focused on testing its platform to ensure the best user experience, the importance of OTT testing can clearly be understood here. So it goes without saying that every OTT platform should be tested for its functionality, performance, etc, and that OTT Automation Testing is an integral part of achieving these goals.

Most Popular OTT Platforms Across the World

After the success of Netflix, many wanted to jump on the bandwagon. And after a flurry of various attempts, these are the top OTT platforms that are popular as of writing this blog.

Most popular OTT platform across the world

Most Popular OTT Devices Across the World

One of the major advantages of OTT services is that they are not limited to just the TVs we use like the old-fashioned cable connection. Instead, we can view and enjoy the content on a wide range of devices such as mobile phones, tablets, computers, smart televisions, and so on. Even if your television is not a smart TV, you can still use plug-and-play add-ons such as Apple TV, Amazon Firestick TV, Roku, etc. to access all your favorite OTT platforms.

Most popular OTT Devices across the world

How to do OTT Automation Testing?

Performing manual testing on platforms with such a huge scale can be a cumbersome task. That is why it is important to implement automation in your OTT testing. As a pioneer in the OTT testing arena, our R&D team had worked hands-on with all the above-mentioned devices to help us render high-quality OTT Automation testing services from the get-go.

First up, we have to connect our computers to the smart tv that we are looking to automate. But since smart TVs are not the only way the OTT content can be consumed, we would be in a position to connect our computers to the various OTT devices such as Apple TV, Amazon FireStick, Roku, and so on.

Android TV Automation

On the surface level, automating an Android app on mobile and on an Android TV might seem to be the same. Though there are a lot of similarities, Android TV doesn’t have a touch input system and has to be operated with a remote. So we would have to keep this in mind when writing the automation scripts.

Required Prerequisites

Step 1: Enable Developer Options by going to the Settings.

Step 2: Obtain the Device Name, Platform Name, Platform Version, and IP address of the TV.

Step 3: Configure your computer with all the required Appium setups.

Step 4: Open Command Prompt and enter the command ‘adb connect ’ to see the list of the connected devices.

Step 5: Run the automation script.

Automation Script

We are now going to see a sample automation script that can be used to launch the application and play a video.

public class LionsGateInstaller {
    public static AppiumDriver<MobileElement> driver;
    public static WebDriverWait wait;
   public static void main(String[] args) throws IOException, InterruptedException {
        try {
            //Set the Desired Capabilities
            DesiredCapabilities caps = new DesiredCapabilities();
       //Set the Smart TV Name
            caps.setCapability("deviceName", "My Redmi TV");
       //Set the Smart TV Platform
            caps.setCapability("platformName", "Android");
       //Set the Smart TV platform version
            caps.setCapability("platformVersion", "11");
       //Set the App package and app activity details
            caps.setCapability("appPackage", "com.xiaomi.lionsgateplay.videoapp");
            caps.setCapability("appActivity", "com.parsifal.starz.ui.features.splash.SplashActivity");
            caps.setCapability("unicodeKeyboard", true);
            caps.setCapability("resetKeyboard", true);
            caps.setCapability("noReset", "true");
            driver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
            driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
            System.out.println(">>>>  APP Launched Successfully::::");
            wait = new WebDriverWait(driver, 30);

If you would like to see more sample scripts for various other actions such as performing a search and remote actions, you could visit our related blogs.

Amazon FireStick Automation

If your TV is not a smart TV running on Android or any other equivalent operating system but has an HDMI port, you can still use devices such as Amazon FireStick to consume the OTT content. So based on the device that you use, you would have to follow different steps to automate the OTT testing process.

Step 1: Enable Developer Options by going to the Settings.

Step 2: Obtain the Device Name, Platform Name, Platform Version, and IP address of the Amazon FireStick in use.

Step 3: Configure your computer with all the required Appium setups.

Step 4: Open Command Prompt and enter the command ‘adb connect’ to see the list of the connected devices.

Step 5: Run the automation script.

Automation Script:

public class Aha_OTT {
    public static AppiumDriver driver;
 
    public static void main(String[] args) throws MalformedURLException, InterruptedException {
 
        //Set the Desired Capabilities for connect my smart to the Laptop.
        DesiredCapabilities caps = new DesiredCapabilities();
      //Set the Smart TV Name
        caps.setCapability("deviceName", "My Fire TV");
        //Set the Smart TV Platform
        caps.setCapability("platformName", "Android");
 
       //Set the Smart TV platform version
        caps.setCapability("platformVersion", "7");
        caps.setCapability("appPackage", "ahaflix.tv");
        caps.setCapability("appActivity", "ahaflix.tv.MainActivity");
        caps.setCapability("noReset", "true");
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);
        driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        WebDriverWait wait = new WebDriverWait(driver, 30);
        System.out.println(">>>>App Launched Successfully::::");
        Thread.sleep(25000);
//Find the Top Picks Content of the Platform and Print that Name 
        WebElement Movie Title = driver.findElement(By.xpath("//android.widget.TextView[@resource-id='Top Picks']"));
        if (Movie Title.isDisplayed()) {
            System.out.println("Top Pick Successfully Verified");
        }
       // To Press the Left button by using Remote Action
        ((PressesKey) driver).pressKey(new KeyEvent(AndroidKey.DPAD_LEFT));
        Thread.sleep(10000);
// Finding & Click the Video Icon
        WebElement videoIcon = driver.findElement(By.xpath("//android.widget.FrameLayout[@resource-id='android:id/content']//android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup[5]"));
        if(videoIcon.isEnabled()) {
          videoIcon.click();
            System.out.println("videoIcon Clicked Successfully");
        }

OTT Testing Checklist

Performing OTT testing is not that easy as it is a multifaceted platform that requires testing beyond the core functionality. So we have curated this checklist with the vast experience we have gained by being an OTT testing service provider. We have categorized all the checkpoints in an easy-to-follow way.

Core Functionality Testing Checklist:

  • Search for a movie by using the title, genre, name of the actors, and so on.
  • Filter the results by year, genre, language, age ratings, and so on.
  • Check if the thumbnails of the movies or shows are proper.
  • Since most users consume such content on their smart televisions, make sure to test the search using voice commands.
  • Open one of the movies and shows to see if all the required assets & information such as trailers, crew information, short descriptions, age rating, length, and so on are available.
  • If it is a show that has more than one season, ensure that the user has the option to choose the season and that it works properly.
  • Play the content and check if the playback functionalities are working as expected.
  • Also make sure that additional features like subtitles, language preferences, and so on also work.
  • Test to see if the video is playing without any issues in all available quality levels.
  • Close the video and reopen it to see if the playback resumes from where you left off.
  • Add one or more movies to the watch list and see if it works correctly.
  • Check the pay-per-view feature by seeing if the video is available for the user to watch even after the prescribed limit.
  • Test if the downloads or offline functionality works as intended.

User Profile & Account Management Checklist:

  • Test if user profiles can be created.
  • Check if the history, watchlist, and preferences do not interfere between those profiles.
  • Ensure the user is able to switch between the profiles whenever necessary.
  • Make sure the parental controls cannot be overridden.
  • Test if the appropriate content is only available in the kids or restricted mode.
  • Access the platform from more than the allowed number of devices concurrently for different plans.
  • Test if the limit on the number of offline or downloaded files functionality is working properly.
  • Make sure the downloaded content can’t be accessed by the user locally on the device.
  • Check if it is possible for a user to switch between the different subscription plans.

Performance Testing

  • Check the startup and rebuffer times to see if they are acceptable.
  • Test the platform by connecting to networks under different conditions such as lossy networks, low bandwidth networks, and high latency networks.
  • Perform load tests for the web page with normal and peak usage.
  • Measure and Graph various parameters like throughout, connect latency, request latency, and lost connections.
  • Check if there are any video startup or playback failures.
  • Make sure to objectively measure the performance by deriving the Quality of Experience (QoE) correctly.
  • Identify the breakpoint of the platform by pushing it beyond the limit.
  • Check how much time it takes to recover after their crash.

General Checklist:

  • Test the installation, launch, and uninstallation of the application.
  • Validate the Login and Sign up process.
  • Test if the user is able to change or reset the password in a secure way.
  • Check if the user is able to make the payment for the subscription using all the possible payment methods.
  • Make sure that the banking information of all the users is kept safely by performing security testing.
  • Check if the platform works across various browser and operating system combinations.
  • Test if the application or platforms works smoothly across different devices such as desktop, laptop, TV, tablets, and mobiles.

OTT Testing Tools

Apart from the regular tools we use across all automation projects, there are no specific or dedicated tools for OTT automation testing. Tools such as Appium and BrowserStack that we use for other projects are the most important tools we use for OTT testing as well.

Appium

As seen in the blog, Appium is a very important tool when it comes to performing OTT Automation testing for Android-powered OTT devices. Though you might be new to OTT automation testing on Android TVs, if you are equipped with the required knowledge on using Appium for Android Mobile app automation, you will get used to it in no time.

BrowserStack

Since there are numerous variations in the OTT devices that are being used in terms of the operating system, form factor, and so on. BrowserStack plays an important role in helping us test across a wide range of devices available on the market. As of writing this blog, BrowserStack has both Android TVs and FireStick available. And based on their website, other popular options such as Roku and Apple TV are on their way to the platform.

Conclusion

We did see how Netflix climbed up the ladder by keeping the user experience at the forefront. That is why it is always important to provide the best user experience along with the best content. OTT testing is the only way to ensure that the best user experience is delivered at all times. So we hope you now have a clear understanding of the importance of OTT testing, how to perform it, and specifically know how to perform OTT Automation Testing as well. Being a top OTT testing company, we will be publishing more informative content and strongly recommend you to subscribe to our newsletter to never miss out on any of our content.

Selenium Grid 4 – Distributed Execution

Selenium Grid 4 – Distributed Execution

As we all are aware of the fact that, Selenium 4 has not been released yet. However, three alpha versions have been released. Selenium Grid has only two components Hub and Node. On the other hand in Selenium Grid 4, we have four components namely – Router, Sessions Map, Distributor, and Node. Selenium 4 has introduced new architecture for Grid. Let’s understand how Selenium Grid 4 works with the three new processes.

Step #1-Start Sessions Map

Download selenium-server-4.0.0-alpha-2.jar & Chrome Driver in a folder and run the below command to start Sessions Map process.

	java -jar selenium-server-4.0.0-alpha-2.jar sessions
	

What is Sessions Map? Session Map is one of the Selenium Grid Processes. Whenever a node/session is created, Node URI/Session ID gets stored in Sessions Map. Why it is getting stored here is another question. You will understand this at the last step.

selenium grid 4

Step #2-Start Distributor

Run the below command to start the distributor process.

	java -jar selenium-server-4.0.0-alpha-2.jar distributor --sessions http://localhost:5556
	

All Selenium Grid nodes get attached under the Distributor process. If Selenium client code sends a create session request, then Distributor is responsible for assigning a node.

Selenium Grid 4 Distributor

Step #3-Router Process

All the client requests will be received by Router. If the request is for creating a new session, then it will be redirected to the Distributor process. All other requests will be sent to the node associated with the request after querying the node URI from Sessions Map using the Session ID. Use the below command to start the router process.

	java -jar selenium-server.jar router --sessions http://localhost:5556 --distributor http://localhost:5553
	

Selenium Grid 4 Router

Step #4-Create a node

While creating a node, you do need to pass all the driver details. Drivers will get auto-detected if the exe/binary files are available in the folder where you have saved the Selenium Server jar file. Once the node is created under the distributor, the node details along with Node URI are updated in Session Map. For a thorough understanding, Please refer to the below diagram.

	java -jar selenium-server-4.0.0-alpha-2.jar node --detect-drivers
	

Selenium Grid 4 Node

Step #5-Start a remote session

Invoke the remote webdriver which will send the creation request to router. Please note – Use http://localhost:4444. Not http://localhost:4444/wd/hub.

	DesiredCapabilities capability = new DesiredCapabilities();

	capability.setBrowserName("chrome");
	        
	RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444"),capability);
	

Grid 4 Session Creation

Once the session is created under the node, the session ID gets updated in the Session map for the node. So that Router can easily identify the node to send the other client requests directly.

Step #6-Router sends command to node

Apart from the session creation call, all other requests will be forwarded to Node from Router directly. Each client request has a Session ID. Using the session ID, the Router queries the Node URI
and finds the node which holds the session.

Selenium Grid Commands

In the older version of Selenium Grid, these processes occur inside the Hub process. Hence we are not aware of the process which happens at the backdrop. Though the setup is complex. Modernization will help us to troubleshoot failures and we can set up our own distributed execution elegantly.

Must do checks before your ELearning course launch

Must do checks before your ELearning course launch

Education is essential, and it should be open to everybody. As innovation pushes ahead, individuals are attempting to build the right platform for online training. During offline training sessions, you can visually connect with educators. It’s getting simpler to convey, pose inquiries, and collaborate, and so on. With a pandemic in its full rage, employers are increasingly opting for online channels. It appears to be that eLearning platforms attempt their best to give quality learning experience. Yet, it seems something is deficient in an informative online session. Consequently, there is still space for advancements in eLearning apps.

E-learning testing is essential and could be done quickly by yourself or using E-learning testing services. Regardless of whether you have spent endless hours building up every segment, it’s consistently advantageous to give it a careful tweak before you roll it out for your employees or students. Here are 14 things to double-check before launching your e-Learning course.

1. Incorporation of Learning Objectives and Goals

It’s smart to go over your whole eLearning course and ask yourself whether each component you’ve included, from the content to the illustrations, serves your learning objectives and goals. Everything ought to be meaningful. It must help your students in grasping the topic, instead of diverting them from the eLearning experience.

2. Each learning Unit is Independent

Each learning unit you’ve made (which is an exercise or module that can uphold its learning objectives and goals) should provide your students with insights towards a given theme. Along these lines, ensure that your learning units’ entirety is independent and that they fit into the master plan of your general eLearning course.

3. Syntax, Punctuation, and Spelling

Triple check your eLearning course to guarantee that your commas, periods, and marks are in their legitimate spot. Additionally, check the spelling of each text as even those that are important for a video or a picture, to ensure that everything is right on target. Keep in mind, spelling and language errors may appear to be unimportant, but have the potential to decrease the general nature of your eLearning course by causing it to appear to be less tenable and composed.

4. Brand Joining

Is your eLearning course in-accordance with the brand picture of your customer or your eLearning firm? Is it intelligent of the topic you’re attempting to make, and does each segment help create a powerful and vital learning condition for your audience? Answer these questions for yourself before proceeding further.

5. Course Diagram/Progress Markers

Are your students ready to keep tabs on their development while partaking in the eLearning course? Incorporated markers that they can use to rapidly and advantageously perceive how far they’ve come, what subject they’ve discovered, and what different exercises they will explore soon. It will give them that additional increase in inspiration and will push them to work more.

6. Correct and Clear Navigation

The route of your eLearning course ought to be as transparent as it could reasonably be expected. It should incorporate forward and in reverse route symbols, a home catch, and a connection to take students to the eLearning course diagram screen. Additionally, ensure that each button is dynamic and show up in a similar spot on each page to dodge confusion.

7. Valuable Content

Each bit of content should reflect practical applications and the necessity of the topic. If not, your students won’t see the genuine benefit of finishing the eLearning course and, like this, are not prone to participate in the learning cycle.

8. Constructive Feedback

When students complete a branching situation, recreation, or appraisal, would you say you are furnishing them with viable criticism so that they are benefitting from their experience? In a perfect world, your students need to be assessed consistently so that they can learn from their mistakes. Guarantee that you are utilizing efficient criticism tools and strategies to give your students the help they need.

9. All Programs must uphold Media (videos, images, and audios) Components

Students will be getting to your eLearning seminar on a wide range of devices. It is why it’s essential to confirm that your multimedia components can be seen on an assortment of devices. Are your sound and video advanced for web seeing? Will they, despite everything, be successful learning apparatuses on the off chance that they are seen on various devices?

11. Is it Mobile-Friendly?

View your eLearning seminar on various sorts of cell phones, if conceivable, to confirm that you can get to the content entirely. Likewise, guarantee that it, despite everything, your application holds its responsiveness and tasteful intrigue when it’s seen on a little screen.

12. Comprehensive Assessments

Have you made exams, tests, and quizzes that are genuinely going to ascertain student intellect? Have you utilized the correct inquiry design (numerous decision, valid or bogus, etc.) in light of the topic? Do your inquiries offer the perfect measure of a challenge for your students, or would they say they are excessively difficult or easy? Therefore, while gauging your students’ comprehension, ensure that you keep the questions mentioned above in mind.

13. Lesson Synopses

Make sure to incorporate recaps or synopses toward the end of every module. Also include brief outlines toward the start, with the goal that your students know about the essential thoughts or standards they will gain from every exercise.

14. E-learning Course Testing after the Launch

Once your course is delivered, it is essential to verify the working by genuine clients. Have them test the application and give their criticism. It will permit you to distinguish any errors or features that would require improvement.

To Wrap

Utilize this list to remember everything to double-check before launching your eLearning course, to guarantee that your eLearning course is holistic and perfect. Keep in mind that while this cycle may require time and exertion, it will spare you the cerebral pain of rolling out these essential improvements after the course’s launch.

How to Design an Agile Friendly Automation Testing Framework

How to Design an Agile Friendly Automation Testing Framework

Agile is test first model, this defines how to kick start testing in parallel with the development. The main agenda of this blog is to relate the automation testing to this model. The discussion is mainly on how to develop the test pack model so that it best suites the agile velocity and with the sprint level expectations. We, as an automation testing company, create a concrete plan while bringing automation into Agile, conduct proper analysis then understands the feasible fashion of test script development.

Design Automation Testing Framework

Designing Automation Testing Framework Given the expectation that the testing has to go hand in hand with automation we must have a proper plan of developing scripts. Whether n-sprint approach or n-1 sprint approach to be followed? Let’s quickly look at how those sprints work.

n-sprint

In this model, we will have to consider all user stories that are listed must be automated.

n-1 sprint

In this model we likely trail by a sprint, whatever the stories those were developed in previous sprint are automated in current sprint. Despite the model, we should always make sure that the regression pack is kept up to the date in the same fashion we have to maintain the sanity pack too.

Types of Automation testing When in agile, we build the system in many iterations and we call them as sprints. It is obvious that we will have only smaller chunks built in linear fashion. The question here is – how do we accommodate the space for test automation when UI and the whole system is not available? Because when automation testing is said, 90% of the spectators talk about automating at UI layer as that has ROI which is better.

If we think automation testing is best deployed to test UI, not others we are missing greatly the ideology. What we are meaning to say here is that we should think of automating at different layers such as API & DB validations to ensure that the system is doing the right thing. If we can ensure that at the initial stage our job would be lot easier, also it helps the business greatly as we are uncovering the bugs early in lifecycle and which are not that expensive to fix.

For an illustration let’s consider that the development approach is a TDD one, we will not have the complete system to test, rather we will have smaller modules/micro services would be developed in an incremental fashion. To support the quick testing at that level we should consider designing a automation testing framework that can have tests based on module wise. We also need to understand what are the services offered by the component and accordingly write type of tests.

Write powerful integrated API tests in order to verify the micro service – micro service communication. Perform some data base table’s validation to see the business logic has been processed successfully and information stored at right table. We will apparently not have UI developed initially so as soon as that gets ready we should be ready in testing the flows that starts from UI.

Conclusion

Test Automation industry has taken a big leap from documenting the manually tested functionality as scripts for future execution to the purpose of serving the need for in sprint automation due to the agile parallel test execution expectation. With following the discussed practices and understanding the strategy of development and testing need, we can design a matching automation testing framework that serves the need of the hour. There is no standard or hard coded practice as such, rather it fully depends on the context of a specific project.

Prerequisite of setting up Automation CoE

Prerequisite of setting up Automation CoE

The decision of setting up Automation CoE has to come from QA head of a software testing company and he/she should have a compelling need to setup this Organization.

Discussion with different Business Units to understand the landscape of Applications, life span of Application in-scope, different technologies involved, current QA tool stacks, how much of automation is achieved till date and how much it is benefiting to them in the current state and future benefits prediction has to be analyzed.

If we have this details in place, it would help us to quantify the amount and nature of work involved and help in analyzing the ACoE (Automation Center of Excellence) team size.

The above requirement would be for Product based companies. If it is a service-based company, below are the requirement to setup ACoE team.

1. Collate the history of at-least 1 year on overall Automation requirements from Customer

2. Nature of Customer and their maturity level in Automation

3. Level of interest in Automation and Automation investment criteria

4. Nature of projects like Staff Aug,

5. Type of requirements they have

Could be identifying opportunity within Customer Organization

Tool and Framework assessment

Training activities

This will give us an insight on how to start an ACoE team from the service companies perspective.

Conclusion:

Since we are in the world of digitalization, there is always a great demand for Automation in the future beyond traditional Automation. We should prepare ourselves for such changes that the industry is undergoing and flow with the tide. The expectation from such Center of Excellence is also growing and we should prepare ourselves for these changes.