Category Archives: Project Implementation

How to Win Funding for a Contact Center Improvement Project and Elevate Customer Service

Good customer service has been shown to produce quantifiable results, from increased repurchases and customer retention to increased advocacy of the brand. Customer service leaders dealing with common contact center challenges know they must invest in modernizing their technology. But securing the budget to do so is a challenge.

To win funding for a contact center improvement project and justify the cost of needed investments, the first step is to create a strong business case that will win buy-in from key stakeholders.

One thing we’ve learned in our 22 years of creating unified customer engagement centers is that the way companies approach customer service generally falls into two categories: CX Focused and Cost Focused.

For your business case to inspire the necessary action, it must also communicate the business benefits of the improvement in language that’s familiar to your organization.

How to Win Buy-in from Key Stakeholders

A 1-point improvement in CX Index scores can help a company increase revenue by $175 million annually, according to Forrester research (Win Funding for your Customer Service Project, February 2019). Organizations are increasingly aware of this and many are investing accordingly. CX-Focused customer service is beginning to take root.

Customer obsession has surpassed efficiency as the primary driver of customer service. A survey of global networks and telecommunications decision makers working in customer service departments found that more respondents rated improving customer experience a critical priority than reducing costs. 

Still, many organizations don’t have a CX strategy, and thus many teams need to work in a cost-savings centric environment. We still work with companies that see the contact center as a cost center first and foremost.

Both kinds of companies exist, and we work with both. 

Below, we’ll walk through the benefits of several different contact center projects and present them in both CX-Focused and Cost-Focused language so you can see the difference.

If Your Organization is CX-Focused

If your organization is CX-Focused, the barometer for success or failure of any contact center initiative will be communicated in CX metrics like Customer Satisfaction Index (CSI or CSAT), Net Promoter Score (NPS) and Customer Effort Score (CES). 

These “gateway” metrics are linked to corporate financial metrics, and thus a positive impact to CX metrics translates into increased revenue. Movement in CX metrics are directly tied to reciprocal moves in wallet share, repurchase rates, long-term loyalty (reduction in customer churn), etc. 

While CX-Focused organizations see the contact center as a profit center, focusing on improved CX also naturally reduces costs via efficiencies by making things simpler and easier for customers. 

So if your initiative is to introduce a solution that will allow you to add and manage multiple channels, you might frame the CX business benefit in terms of “agent enablement” rather than “agent productivity” which would tend to perk up the ears of a Cost-Focused organization more than a CX-Focused one. 

If you aim to increase visibility into your contact center operations, you might focus on the ability to identify poor customer experiences and problematic agent performances as the primary benefit of analytics rather than lower IT and support costs, even though both are true.

If Your Organization is Cost Focused

If your organization is cost focused, it’s likely trying to contain costs and resources even as customer demands grow. It may be reducing or reallocating resources. Your measurements are likely cost centric, such as self-service usage, cost per transaction, interaction, or channel, handle time, and so on. 

So if your initiative is to reduce technology silos and unify disparate platforms, you might frame the business benefit in your business case as “smoother, faster calls and improved agent efficiency” rather than improved customer experience and agent satisfaction.

If your initiative is to introduce more self-service, you would focus on the projected operational cost reduction of steering interactions toward lower-cost channels — chatbots versus voice — instead of focusing on how chatbots make things easier on customers and increase Customer Effort Scores. 

4 Steps to Calculate the ROI of Your Initiative

Regardless of which kind of organization you are, you need to calculate the ROI of your initiative to win funding. To do so, follow these four steps:

1. Determine the Benefits

For a CX-Focused organization, the key thing will be to increase customer satisfaction by reducing the customer service effort, and seeing it reflect in CX metrics. Examples include better enabling your agents with knowledge and tools, ensuring customers can reach you on the channels they prefer and making it easier for customers to self-serve by providing access to information and intelligent conversational chatbots.

For a Cost-Focused organization, focus on similar areas, but with agent productivity and reduced operational costs in mind. For example, agent productivity becomes about the tools that help reduce the time an agent needs, while bots offload a portion of interactions completely and introduce lower cost channels that customers want (e.g. chat) to enable the organization to have lower cost interactions on those channels.

2. Capture the Costs

Capture the costs in these areas:

  1. Technology and infrastructure costs of expanding an existing system or adding new systems
  2. Services and labor, whether you’re using internal resources and / or hiring an external team
  3. Training for the agents and supervisors, so they can be effective from the get-go

3. Assess Business Adaptability

Businesses now have to be agile by continuously adapting to changing customer needs. Ensure that the solution or changes take this into account. Does the adaptability increase with the solution?

4. Understand the Risks

Different types of risk must be analyzed to provide the confidence that the funding is well placed.

  1. Project or Deployment Risk: How risky is the implementation of the new or expanded technology? Quantify the risk of cost overruns or delays in achieving the business value.
  2. Success Risk: How likely is it that the success criteria, which identifies the expected benefits, is correct? This is typically shown through the depth of the research data used to determine the business value.

In Summary: A Checklist for your Business Case

While your focus would be on the 4 points above, here are a few additional points to consider when developing your business case:

  • Tailor your message to the key decision makers involved in the process
  • Look for at least a 12-month payback period
  • Base your benefits on facts, case studies or proof of value so it clear and easy to believe
  • Think like an accountant. How you are delivering value will usually be secondary to how much payback and how quickly. Make sure your numbers stack up.
  • Align yourself to an executive sponsor who can champion your initiative at a senior level when you’re not around
  • Don’t ask for too much, prove the benefits case in the most economical way and if it’s successful, returning for more funding to expand the initiative will be easier with proven benefits
  • Remember you will be competing with lots of business case proposals so try and make your proposal appeal to the strategic initiatives from senior management as they will be more likely to fund your proposal if it delivers on their priorities and goals

If at first you don’t succeed, try again! A rejection doesn’t mean you should give up. It could be the result of bad timing. Budgets may be on hold until the next financial year. If you truly believe in what you’re doing, multiple submissions will demonstrate your passion and may help you get that approval!

Nail Your Contact Center Improvement Project with Aria Solutions

Have a contact center improvement project you want to start? Contact us today for help developing a strong business case that helps you achieve your business and customer service goals.

Aria Solutions has empowered 550,000 agents and completed over 1,200 successful projects.

Our customers don’t just see us as contact center experts or vendors. They see us as a part of their internal team responsible for building strategies and direction, recommending technology and providing direction on how the solution should be implemented.

Thanks for reading!

4 Steps to Take Before Jumping into Your Next Contact Center Solution

Throughout our 22 years of experience, Aria’s developed a methodology that we use to help our clients achieve unified customer engagement centers.

In our last blog, I discussed common contact center challenges and shared how four organizations overcame them.

Those challenges — siloed technologies, inflexible infrastructure, introducing or maintaining multiple channels, limited agent visibility — are some of the most common obstacles facing contact centers today.

Whether your contact center is facing one of those challenges or you’re aiming to expand your center’s capabilities, the first step is not choosing a technology or contact center solution to fix the issue.

First, you must:

  • Assess the contact center to determine the problem you’re out to solve
  • Quantify the benefit of solving that problem with a business case
  • Create a strategy and roadmap to fix it
  • Create parameters so you can adequately judge/compare technologies and solutions

This blog will take you through each of the four steps.

Step 1: Assess the Contact Center

The first step is assessing your contact center so you truly understand what problem you’re out to solve. This is more challenging than it may seem.

Before jumping into an assessment, go back to the vision or direction that the company has defined and the objectives that have been laid out, as circumstances often change. A company might be striving to provide high touch service to help own a niche market, and good customer experience is important to that.

To meet these objectives, the company will need certain capabilities, which might not be possible to meet with the current technology. Thus, an assessment will be required to understand the gaps that need to be filled. Examples could be adding digital channels, conversational enabled self-service, or having a single view of the customer across all departments.

But in the world of customer engagement, one challenge is often tied to, or related to, another.

For example, if you’re looking to better enable your agents at their desktop, you’ll likely find that changes will be necessary to the routing system as well as to the IVR or bot. You have to look at the contact center holistically to properly understand the challenge you’re facing and to identify appropriate solutions.

If your gap requires adding digital communication channels so your customers can reach you more easily on their channel of choice, the impact of that change will be felt throughout all areas of the contact center, from the“front door,” to routing, to how agents are enabled to handle the new channel — even to how workforce management schedules get created.

Action items:

  • Examine your current contact center operations to assess processes, prioritize gaps, and identify efficiency opportunities affecting business objectives and the customer experience
  • Evaluate the existing technology, providing recommendations on how to better leverage it, and where new technology could be of benefit
  • Build a comprehensive and holistic report of your contact center, covering all the systems that make up a contact center solution, such as ACD, WFM, routing, QA, digital channels, customer journeys, self-service (IVR, voice and chat bots), and CRMs

Step 2: Make the Business Case

Now that you have identified the gaps that need to be filled in your contact center, the next step is to quantify the benefit of filling those gaps.

Creating a business case and conducting ROI modeling for each potential change will help you understand the immediate and long-term financial results you can expect, win the support of other stakeholders and identify must-have features for when you are comparing solutions in Step 4.

Action items:

  • Identify key cost items, such as cost per call or interaction, or their cost elements such as labor cost per hour and interaction volumes
  • Identify all activities that consume your agents’ time. With siloed systems, activity might be captured in different systems
  • Include future growth projections

Step 3: Create a Strategy and Roadmap

Now that you’ve clearly identified your contact center’s goals and backed them up with a business case, it’s time to create a strategy and a step-by-step plan to get it done.

Action items:

  • Create a list of actionable recommendations to fill the gaps identified
  • Identify the initiatives/technologies required to implement these recommendations, which could include:
    • System integration or silo management
    • Omnichannel engagement
    • Cloud migration
    • Business analytics
    • CX analytics
    • Workforce management
  • Create a roadmap that includes a timeline to complete each initiative, important milestones, opportunities to quantify progress made, an objective measure of success (call center KPIs, customer metrics, business metrics, etc.)

Step 4: Identify a Contact Center Solution Vendor

Now that you’ve adequately assessed the challenges facing your contact center, tied them to a business case, and created a roadmap and strategy to overcome them, it’s time to identify an actual solution. Easier said than done.

There are countless options to choose from. New technologies aimed at contact center challenges seem to appear every day.

Action items:

  • Identify budget for a new contact center solution based on the business model in Step 2
  • Find solutions that offer all required technology, must-have functionalities and support levels based on the recommendations in Step 3
  • Identify the capabilities, fit and risks associated with each solution considered

Aria’s Methodology

Throughout our 22 years of experience, we’ve developed and refined our approach to delivering CX solutions to help our clients achieve unified customer engagement centers, including some of the world’s biggest organizations.

Our customers don’t just see us as contact center experts or vendors. They see us as a part of their internal team responsible for building strategies and direction, recommending technology and providing direction on how the solution should be implemented.

For the past 22 years we have empowered 550,000 agents and completed over 1,200 successful projects.

We invite you to learn more about our team or contact us today if you’d like to talk through your contact center challenges with one of our experts.

Thanks for reading!

How to Increase ROI for Your Custom Development Projects

It’s an exciting time to be in IT these days! Digital transformation is gaining in popularity, one element being the move of IT infrastructure to the cloud. Many different platforms that are available today provide a lot of opportunities to build exciting functionality through custom development and platform integrations.

On top of that, companies are looking for more options to provide their customers with self-service opportunities, either through customer portals or through bots using traditional and modern service channels such as telephony, SMS, or instant messaging apps like Facebook Messenger or WhatsApp.

All of this requires a significant number of process automations and system integrations, which allows companies to build custom solutions for their internal and external services, so they can provide better customer service and more efficient processes.

Why is all of this important?

Because companies that ignore the digital transformation will miss out on the next generation of customers, and continuously lose ground on their competition, which will be faster and better at delivering business value.

Why digital transformation is affecting project development

Software development is at the heart of the digital transformation!

Here are some examples of contact center and business cloud platforms, innovating for the digital transformation era:

Overall, more and more companies are transforming their applications into platforms or at least investing heavily into APIs that allow for deeper integration.

Unfortunately, the increasing demand for custom development comes with a maintenance cost attached. And that cost can vary significantly, based on the quality of the architecture and implementation of any given solution. If a company relies on an integration to submit orders from their CRM to the order management system, the integration becomes an additional point of failure (in addition to the two systems involved). An error in the code could prevent the orders from being submitted, and in a worst case scenario, this error might not even be noticed right away.

In theory, those automations provide a defined business value, but the reality is that this value is reduced by technical debt accrued during development. This includes not only errors in the implementation that cause the integration to fail, but also the additional effort needed to implement new business requirements in the future. The latter is very difficult to track, since there is no reference point to what a “perfect” system looks like. Nevertheless, it exists, and I have seen simple feature requests take a substantial amount of time refactoring the initial solution because it did not follow best practices.

This brings us to the last question: What can be done to reduce the negative effect that software quality issues can bring to a project or a business solution?

3 steps for improving the quality of your projects

I recommend the following 3 key steps as a starting point to improving the quality and outcome of your custom development projects. There are obviously more things that you can do, but from my experience, the following actions are essential for maintaining the ROI of any project.

1. Use software design patterns and development best practices

Design patterns have been proven to be successful when it comes to increasing code quality in a product. Not only do they introduce consistency between developers, they also ensure that the developed code is easy to understand and extend as your business solution evolves. Applying those patterns even to the smallest components will help to reduce bugs and, consequently, maintenance costs further down the road.

2. Introduce quality processes and automated testing

These elements are core to any software application development these days. First of all, any code developed, whether it is big or small, should be tracked in a version management system such as Git. It is critical that developers can review the history of a file to understand the context of how it evolved. With that, it is also possible to introduce code reviews as a standard process of everyone’s work. Any changes should be peer reviewed to ensure that standards are followed, and to reduce the risk of introducing errors. Adding automated tests, such as unit or acceptance tests, will further improve the quality of the solutions. While code reviews ensure the quality and correctness of the implementation at the current time, automated tests are there to detect regression introduced by future modifications of the code. All automated tests should be executed every time a new change is introduced to the environment.

3. Add Reliability Engineering

This step is the most difficult. Reliability Engineering extends the solution by building a framework of utilities and services that business solutions use for the implementation of the use cases. Those utilities and services are designed to handle malfunction of the business logic by recording incidents, raising alerts, applying strategies of self-healing, or possibly even initiating a restart of an entire system or component. For example, in the situation described above where the integration between the CRM and order management system would fail, notifications could immediately be sent out to IT that the integration is broken. If the reason for the failure was a connection timeout, which could mean that the order management system does currently not have enough resources available to process the order, the integration could queue the record and process it at some later time, assuming that more resources will then be available and the order submission will succeed.

In the best case scenario, human intervention is not needed, but if it is, it is important that every failure is handled consistently. While it is understood that production issues will occur, the goal of the framework is to detect those early and to collect critical diagnostic information that will significantly speed up the root cause analysis. Reporting this information will enable IT to make the right decisions to solve the issue quickly.

It should be noted that many of today’s cloud platforms have these features baked in. The key is to utilize their framework to make sure application and platform issues are handled in the same fashion. There obviously must be a balance between value and implementation time when deciding what reliability features should be included in a solution.

Nonetheless, any steps taken in this area will further secure the ROI, by ensuring that the final solution will work as expected. If it does not, it will have the smallest impact possible on the organization.

The value in following these steps & breaking down silos

It needs to be understood that any of these steps will add development time for the initial implementation of any use case. However, it should be noted that this time increase is mostly just theoretical nature. In practice, if those measurements are not applied, a project typically requires more time for bug fixes and re-work of those use cases, often exceeding the time spent adding those quality processes.

Breaking down the silos between enterprise systems adds a lot of value to the organization. This is an important part of the 4th industrial revolution. However, the applications that link those systems together are becoming a critical element for a company’s operations and must therefore be set up using strategies that ensure quality and flexibility for the future. This let’s your organization focus on continuous expansion rather than chasing the mistakes made in the past.

5 Questions to Think About When Planning System Integration

System integration planning is the process of incorporating smaller sub-systems into one larger system to ensure they all work together. Integration is a cornerstone of today’s enterprise environments with their multitude of enterprise resource planning (ERP) systems.

The power of those software applications does not lie only in the functionality that they provide themselves, but in their ability to communicate with one another, in order to make data flow seamlessly through the environment. This improves processes and makes a company more efficient as a whole.

When thinking of integration, web services standards such as SOAP and REST come to mind. Those are meant to simplify the integration with the large number of support tools that are built around them.

Unfortunately, the tools themselves are not the solution to your integration problems, but only the means to a faster implementation. The real solution is proper system integration planning and design, which need to be based on the right criteria. And that is not always the case in a project.

So, what are the best methods for the design when integrating two systems? Well, there are a number of questions that need to be answered in the planning stage.

Let’s go through these 5 key questions:

1. What is the data that the target system requires to complete the integration task?

Identifying the target data is an important first step. It defines what objects or tables need to be accessed, and the rules the data needs to comply to. Typically, the target data model drives the design of a custom integration point, should one be required.

2. Where is the data required by the target system located in the source system, and what transformations are needed?

Common examples for data types that need to be transformed are numbers and dates. For example, date formats and time zones may be different between the systems and have to be converted.

3. What is considered a transaction within the integration task and are there any dependencies between the transactions?

A transaction is an atomic unit of work. It only changes the state of the target system if the data was successfully transferred and processed.

If any failure occurs, whether it is during the transport or processing (i.e. validation), it must be ensured that the target system remains unchanged. For example, if a transaction creates multiple records in the target system (i.e. an account and a contact, and the account was successfully created but the contact failed the validation), it must be ensured that the account record is removed again. This way the target system has the same state at the end of the transaction as when it started.

4. How will you connect to the target system (domain name, IP, etc.) and what security constraints apply (certificates, credentials, etc.)?

Connectivity and security constraints should be identified and verified early on in the project. As those can often be reasons for a project to be delayed or even fail altogether. The reasons are manifold like: missing firewall rules, required certificates, setup of new security roles and credentials, protocol incompatibilities between source and target system – just to name a few.

From a technical perspective, most of those issues can be resolved. But it is often the processes or additional constraints that are only identified during the validation, which add more risk and effort to the system integration project.

For example, the target or source system may need to be patched up before they can communicate with one another. On the other hand, the networking team may need to open up the firewall and create new domain name (DNS) entries for the connection to be established. These are typically not very complex technical problems, but depending on the size of the company, they may require approvals and involvement of other groups requiring additional time.

In some cases, changes such as patching a system may introduce conflicts to other parts of the organization, which may make the integration much more difficult or even impossible.

 5. What interface options do you have available (REST, SOAP, Custom, etc.)?

The interface options have an impact on the tools and implementation design. This is because they help determine whether the solution must be entirely custom or whether productized solutions are an effective system integration method.

Creating the right design may not always include the path of the simplest or most straightforward solution.

The Influence of Transactional Requirements on the System Integration Process

To demonstrate the impact of transactional requirements on an integration design, let’s look at the example of an order submission from a Customer Relationship Management (CRM) system to an order management system (OMS). Before the order can be submitted, the system needs to ensure that an account exists since the order must be linked to it. If it does not exist, let’s assume the requirement is to create one as part of the integration as well. The account should only be created for a successful order submission, but not if the order submission fails.

The OMS provides a standard SOAP interface that allows for the typical data operations (CRUD – created, updated, delete) on the entities, such as account and order. It also provides the ability to create custom web service endpoints exposed through the same SOAP interface.

Now, choosing the standard SOAP interface has the advantage that no custom development is needed inside the OMS. The CRM can first create the account using the account interface and then create the order through the order interface. However, while this seems like a desirable approach for the implementation, there are disadvantages that need to be considered.

Since the account and order interface are separated by different endpoints, it requires two independent SOAP requests to submit the order. This means that the risk of a communication channel causing an error doubles. It also means that it requires an additional request to delete the account if the order submission fails to fulfill the transactional requirement for accounts to only be created with a successful order. That deletion request itself has the risk of failure, and that would leave the OMS in an invalid state, because the account exists, but the order does not.

Better Integration Planning

To address all those issues mentioned above, a custom endpoint could be created in the OMS that would consume the data for the account and order in a single request. The logic processing the request would have the ability to validate all the transmitted data for the account and order creation before even attempting to persist the information in the database. And it would be able to handle the cleanup of the account should the order entry fail.

On top of that, only a single request would be made from the CRM, which means less overhead, less risk of failure, and the overall integration process is completed faster than if using the multiple requests through the standard interface.

This is just one example. Of course, even though there are many reasons to consider custom endpoint in the given case, it does not mean that it is always an option to go down that path. Using the standard interface is obviously a feasible option as well, but it comes with increased risk and complexity, and that needs to be understood and included in the project planning.

Every system integration comes with its own challenges. Answering the questions listed above will help to solve those challenges the right way. In addition, if the right validations are done upfront to identify and address those risk factors around connectivity and security, it will just be a matter of time until the two systems are integrated with one another, boosting the productivity of your company.

Need help with your system integration plan?

Our enthusiastic and highly experienced team can assist with your software integration planning and contact center integration needs.  Let us know how we can help!

Don’t Squeeze the Life Out of Your New Contact Center Project

Congratulations, your new contact center solution finally received budgetary approval! You have been waiting years for the opportunity to provide a better experience for your customers, a more empowering solution for your employees, and a rich new set of data for your managers. Now you are thinking, “This is my chance and it does not come often. So, I am going to dig my heels in and squeeze everything I can get out of this project.” We don’t blame you! However, starting a project with this mentality does not always generate the best outcome.

Why? You are learning the capabilities of the new solution while at the same time agonizing and scrutinizing over all of those pent-up needs and requirements. This often leads to project paralysis, longer project durations, and a reduced return on investment (ROI).

By the time the project is rolled out, you’ve got implementation fatigue from being involved in the project while continuing to deliver your day job responsibilities. At this point, you accept whatever went into production as you need to move on to other business priorities. The result is something less than you desired. There are usually compromises during the initial deployment and new requirements identified once customers and employees start using the system.

In our experience, it is better to determine complete requirements once the solution is being used. Therefore, we would like to recommend a different implementation approach that reduces project stress, engages customers, empowers employees sooner, increases ROI, and has better end results.

  • Phase 1: Deploy – implement a basic or templated solution as part of the initial deployment. In most cases, the capability being deployed still provides an improvement compared with what is in your environment today. So, a basic solution gets you going with new technology and still provides an improvement over what you currently have.
  • Phase 2: Learn – gather feedback from customer and employees. Compare what they say about how you are engaging with customers, with how you defined your solution.
  • Phase 3: Adapt – enhance, tailor, and customize the solution based on a more thorough set of requirements.

With this approach – time, energy, and costs saved through the “Deploy Phase” are reinvested in the “Adapt Phase”.

From what we’ve seen, this approach results in a higher quality solution with less stress and similar costs. Increased ROI and customer and employee engagement are realized by a quicker initial deployment and through the opportunity to enhance the solution after a period of use.

A New Way of Implementing the Genesys CX Platform

Robert Church, CEO of Aria Solutions, unveils a new 60-day implementation approach called SWIFT™ Premises – a complete, modernized, Genesys contact center solution that can be implemented rapidly and expanded to incorporate the omni-channel experience customers expect.

“We’ve seen a lot of companies experiencing revenue and customer satisfaction pressures, because they were looking for a new contact center solution and spending years deploying and customizing a new system, while their current systems were no longer meeting business needs and needs of their customers”, says Church.

Aria’s new solution model enables companies to make the investment based on a more efficient and thorough implementation process:

  • Deploying a modernized, enterprise-class inbound contact center foundation in 60 days
  • Learning the new solution and refining the requirements based on findings
  • Adapting to current and future needs by expanding the platform with enterprise-class capabilities[su_spacer]

The keys to this solution is its automated, but flexible deployment approach and its configuration capability, which come from Aria’s pre-tested, pre-built, and pre-validated assets: SWIFT™ Auto Attendant, SWIFT™ Routing, and SWIFT™ Real-Time Reporting. They provide options to meet various contact center requirements, speed up the deployment process, illuminate risks, and allow businesses to retain a complete control over their systems for easy maintenance and support.

In addition to Aria’s assets, SWIFT Premises includes core components, such as: SIP/Legacy PBX integration; High Availability – Dual Data Centers; Desktop and CRM integrations; WFM; Real-time Dashboard Reporting; and More.

“Many contact center implementations spend more time than desired in analysis paralysis, documenting hundreds of requirements, and customizing while learning a new system. This leads to long implementation times while in reality 80% or more of contact center requirements are the same”, says Kelly Wilson, Aria Solutions’ VP of Client Solutions.

Wilson says that Aria’s 20 years of experience in partnering with Genesys, building contact center technology and implementing complete solutions have enabled them to develop a unique implementation approach that no one else has.

Fast deployment, speed to market and adaptability are key reasons why Aria’s new solution approach is called “Swift” – one of the fastest, most agile and adaptable birds on the planet.

To learn more about this solution approach, visit