Spiria logo.

Everything you need to know about mobile application development

May 25, 2021.

More often than not, when we start out with an idea for a mobile application project, we get to work believing that executing it will be relatively straightforward. However, as we progress in the project, we gradually realize there may have been more to it than we anticipated. Yet forewarned is forearmed: by knowing ahead of time what to expect, and being aware of the pitfalls to watch out for, you maximize your chances of meeting success.

This handy guide was developed to set out everything you need to know about mobile application development, including all the steps that will take you from your initial idea to a full-fledged application that you can upload onto the App Store or Google Play.


What exactly is a mobile application?

What exactly is a mobile application

A mobile application is any software specifically developed to work on any mobile peripheral with a touchscreen interface. Writ large, this definition includes tablets and smart watches. But unless you specify this, “mobile application” will be understood to mean an application developed specifically for smart phones.

Oftentimes, a mobile application developed for telephones can also work on tablets, since tablets usually run on operating systems derived from those developed for telephones. In the Apple ecosystem, you can even run an iOS application on a Mac, if it has at least version 11 of macOS. But this is still experimental and telephone-specific interfaces are poorly suited to a non-touch environment.

Which applications come for mobile phones?

There is a myriad of mobile applications, both for Android telephones and for iPhones. The operating system that comes built-in with a new telephone already has an assortment of basic applications, like a Web browser, email software, an agenda, a contacts manager, a viewfinding application for the camera(s), etc. You can then add to this built-in collection of applications by downloading complementary applications from Apple’s App Store or from the Google Play Store (formerly called Android Market). Some applications are free, while others are paying.

All applications come in three basic categories, depending on the technological choices made to develop them: native applications, cross-platform applications and Web applications.

Native applications

Applications developed specifically for any given mobile platform are known as “native applications”. They are based on the technology provided by the operating system (Android or iOS) and on the hardware platform. In theory, they provide the best performance and the most features. Native iOS applications are generally written in the Swift or Objective-C language, while native Android applications are written in Java or in Kotlin. The downside of purely native applications is that those specifically developed for Apple devices won’t work on Android devices, and vice-versa.

Cross-platform applications

If you want to develop a single application for both iOS and Android, there are alternatives to developing two separate, technically distinct applications. Development teams have the more economic option of using a common codebase to produce the two different versions, thanks to tools like Xamarin and Flutter. At the end of the line, you end up with two separate applications, each one compiled specifically for its own platform, but overall you’ll have spent less time developing. However, these applications do have some limitations and are often more demanding in terms of storage, processing power and RAM than purely native applications.

Web applications

Web applications are implemented through Web technology, i.e. HTML, CSS and JavaScript. These applications can run locally or require Internet access to work. User data is often stored in the cloud. These applications are generally slower than native and cross-platform applications. Also, they often provide fewer features and have limited access to native APIs, i.e. device features. The main advantage ascribed to them is their lower development cost relative to native and cross-platform apps, but this is not always true.

There are different formats of Web applications. Among the most common are the hybrid applications encapsulated in a native, Web-viewing application (UIWebView on iOS and WebView on Android), and Progressive Web Apps, an on-line application format pushed by Google.

Why do we develop mobile applications?

Of course, the first question to ask is whether you should develop a mobile application in the first place. Do you even need a mobile application for your concept? If you’re reading this, you probably have a pretty good idea of why you need an application specifically for smart phones.

According to a 2021 poll by the Pew Research Center, 97% of adults in North America own a mobile phone and 85% have a smart phone. And these figures are even higher among the younger cohorts, where penetration rates for smart phones reach 89% for the 13-19-year-olds in the United States, according to a Common Sense poll from 2018. Further, as early as 11, over half of all children own a smart phone (53%, according to the same poll).

So, smart phones have become a pervasive communications tool, reaching deep into just about all sociodemographic categories. In fact, for many, smart phones are their only access to the Internet, making them the best medium to reach the widest audience possible and to access millions of potential new customers. However, to achieve this, you’ll have to develop an efficient application that will fulfill one or more existing needs.

There are three main types of mobile applications:

Product applications: This is when the application is the product itself, and it is generally what is sold to the user. It can be a consumer application or a professional application. It must fulfill an existing need, and the way it does this will determine its success. The application can even be free for the end-user by being self-financed, for example through advertising or a subscription model that provides access to additional features.

Service applications: Service applications are usually free and provided by companies as a complement to their offer of services. Service applications are a powerful marketing tool, as they allow companies to maintain a relationship with their clients and show them new offers. Typical examples of this marketing tool include the banking applications that all banks offer today. These applications provide many different services to customers, such as looking up their bank statements, transferring money and managing various financial products. Top-notch banking management applications can actually attract clients (for example, through personal recommendations) and definitely contribute to retaining them, since these applications nowadays constitute the main interface between clients and their bank.

Sales applications: Sales applications support the sale of physical products; however, they can come with services to foster customer loyalty. Sales applications are a de facto “on-line store” that facilitate ordering, but also serve as a powerful tool for marketing and advertising. Companies use sales applications to increase sales, stay in touch with their clients, support brand loyalty and reach new audiences in a multi-channel strategy.

Questions to ask before taking the plunge

After the initial idea, many questions need to be asked: how can I create a competitive advantage for my future users? What problems would they like to resolve? How can my mobile application change their lives for the better? What would they find attractive? What features will my application provide? Is this project truly useful and worthwhile? What does the competition offer? Does a similar application already exist? If so, how can I demonstrate that my project will provide a net gain for investors? What marketing strategy should I use?... and so on.

Answering all these questions ahead of time is crucial if you want to succeed and avoid making mistakes along the way. And if you’ll need external financing to develop your project, having answers to these questions is nothing less than a duty, since investors will ask them.

You should examine three basic questions from every angle: What is it? Who is it for? How to achieve it?

What is it: What is the basic idea behind the application, and what need does it fulfill? What added value does it provide over the current market offering? Why now? What basic minimum features should it include in the short term? In the medium term?

You must have a clear picture of what kind of application you hope to create. You don’t need to nail it down to every last detail, but have a basic idea of what need the application will fulfill. How is it different from existing applications? And if it isn’t, why reinvent the wheel? In order to attract the maximum number of clients, you’ll need to differentiate yourself from the competition.

Who is it for: Who is your target market? Individuals? Companies? If so, employees or management? Depending on your application’s target market, your sales, marketing and communications tactics will be very different. The contents of your application must be tailored to your public, hence the need to define ahead of time, as specifically as possible, who the “final product” will serve.

How to achieve it: What is your budget? What kind of revenue do you expect? Who are your investors? Which peripherals must be compatible with it? Who will be developing the application? How will the application pay its way and generate income? What is your communications and marketing plan?

Building a mobile app

Budget: How do you figure out how much your mobile application project will cost? That is a good question! First of all, ask yourself what benefits and impacts you expect from this project: is it a financial gain, a qualitative gain, or both? Does the application allow you to automate processes or generate an additional stream of income? All of these considerations will enable you to better assess how much you are willing to invest upfront.

Partners: Make sure you surround yourself with real professionals to develop your application. Making the wrong choice can jeopardize your entire project. Do your homework thoroughly before starting. Look for a real partner, as opposed to just a supplier of services; a true partner will involve you throughout the development process, reducing the risks inherent to any project.

Application format: Native, hybrid, or Web application? Which platforms should be targeted? You should answer these questions and other relevant considerations as early as possible and choose the format and technology accordingly, bearing in mind your long-term vision; your partners will be able to guide you at this stage. If you don’t have the budget to do it all at once, you can always prioritize your features and execute your project in stages, for example one version or platform at a time.

Communications and/or marketing plan: Do not neglect your communications plan, especially if you’ll need to seek financing; in fact, it’s one of the most important aspects of your preparation. Your communications or marketing plans will attract investors, or not, when it comes time to sell your project. The clearer your plan, the more structured it is, the more convincing it will be.

When: What’s your timeline? On what date would you like to see your first version? It’s always best to be a little early than a little late. This keeps you from making snap decisions, which often prove to be wrong decisions.

The process of developing a mobile application

1. Planning

At the planning phase, you should have answers to all the questions raised in the previous chapter. Planning is fundamental to application development, and is based on exploratory meetings and analysis with the multidisciplinary team in charge of development. At the planning phase, you put in place all your risk abatement measures to start off on the right foot. Do not rush it or worse, dodge it, as your planning is a good predictor of your project’s success or failure. At this stage, you define the concept, set the basic outline of the product, identify the target market and assess the relevance of each one of your projected features.

2. Requirements

This step takes up the work you did in the planning stage while adding a new layer of detail. You seek to comprehensively and accurately capture the needs and objectives of the mobile application. You’ll end up with a complete list of the application features that each team will prioritize (in “sprints”) for design and development purposes. The completion of this stage should yield all the information you need to assess the cost of your project.

3. Design and prototyping

Once you’ve defined your requirements, the architecture of the application is sketched out in this phase. It can take one of several forms. For example, it can describe the technological architecture (hardware and software), or the interfaces exposed to different services or data sources.

At this stage, an analysis of the User Experience (UX) helps build a functional mock-up (Wireframe) to validate the visuals (User Interface), the usability and the efficiency of browsing within the application. The goal of UX/UI for a mobile application is to provide excellent user experiences through interfaces that are interactive, intuitive, fluid, efficient and user-friendly. The success of a mobile application rides on the quality of its design, which will dictate whether users adopt and use all of its features.

Different proofs of concept can give rise to different functional prototypes. These proofs of concept are validated and tested on the Front-End with representative users of the target market, before launching into the next step.

Spiria provides a service called “Discovery Process”, which includes and covers these first three phases. The goal is to plan out any future software product and to provide you with functional prototypes and a clear, comprehensive roadmap.


4. Software Development

As its name indicates, this is the stage when developers write the actual code for the application (Front-End and Back-End) and connect the interfaces to achieve the defined objectives. Depending on the platform (iOS or Android) and the type of application, developers will use various programming languages and software tools. All this is explained in detail in the “Technology Stacks” section below.

As we work with the Agile-Scrum methodology, this is an iterative process. This means that the client can monitor, test and approve the features as they get coded, and that an operational solution can be delivered progressively, according to the needs prioritized by development cycles (the “sprints”).

5. Tests and quality assurance

Throughout the development phase, various tests put the application through its paces with a view to validating its behaviour, security, performance and operation on various telephone models (real or virtual). Several aspects of the program get validated: do the interfaces display correctly on all screens, regardless of their format and orientation, and are they reactive enough? Does the application use up too much battery power? Does it properly manage network bandwidth when trying to connect? Are the details of user accounts stored safely? And so on.

The teams execute test plans and the results are parsed. During this quality assurance (QA) work, a continuous feedback loop between quality analysts and developers serves to eliminate any malfunction, error or unexpected result. When all the problems identified by the quality analysts are addressed, the application is ready for release.

In-depth quality assurance tests at the development stage are the only way to ensure that the mobile application will be stable, usable and secure from day one.

6. Release

Application release marks the end of development and testing of your mobile application, and is your cue to start cooling a good bottle of Champagne. For most mobile applications, this phase is topped off with the release of the application on a distribution platform such as Apple’s App Store for iOS applications, or Google Play for Android applications.

The iOS procedure is the most complex. First, you must submit the application, along with its attendant metadata (description, category, keywords, launch icon, privacy statement, etc.), to the App Store. Then, you undergo a validation process, which can take anywhere from days to weeks. The time it takes depends on the quality of your app, its level of complexity and degree of compliance with Apple’s iOS development guidelines. If your application requires users to connect, you’ll have to provide Apple with a test user account.

As regards Android applications, since Google does not have a validation process, things go much faster. Your application becomes available for download from the Play Store in just a few hours.

Note that starting in 2022, following in the steps of Apple, Google Play will require all applications to provide details on the data they collect, as well as other information on privacy and security practices.

Both platforms provide statistical tools to measure the success of your application. As soon as you notice the first user downloads, it’s time to pop the cork!

7. Maintenance

This is the phase where, typically, a new team takes over. This new team is a post-release, after-sales client service team. Following a stabilisation period for the solution after its release, the support and maintenance team monitors client requests, crash reports and any problems flagged by end-users. This team also ensures that the application remains compatible with new generations of mobile devices and new versions of operating systems.

Note that swift assistance for end-users and frequent updates to fix and improve the application are essential to retain user engagement. Also, do encourage your users to provide you with comments and suggestions on your application. They can be a great source of ideas for application enhancement.

Popular technology stacks for mobile development applications

Tech Stack

A technology stack is an array of development tools that use programming languages and software aids available for any given platform (iOS, Android or cross-platform) to support efficient application development. The right choice of stacks depends on the platform and the characteristics of the project; indeed, certain features or expected outcomes may impose a certain language. Though there is no good or bad stack per se, one will be best suited to the requirements of your project. The following is a list of the most common components of a tech stack, by platform:

Components of a tech stack for iOS applications

Programming languages

Two main programming languages are commonly used for iOS application development: Objective-C and Swift.

Since the inception of Mac OS X, Objective-C has been Apple’s preferred programming language for writing software for both the Macintosh and the iPhone. It is a superset of the C programming language, which offers object-oriented capabilities and a dynamic runtime. Objective-C is quite popular, especially in the area of complex product development where it still predominates.

In 2014, Apple introduced Swift, a language dedicated to its ecosystem. As it is more modern, readable and straightforward than Objective-C, it quickly gained app programmers’ support. With an updated syntax and programming models, it prevents the most common errors and makes developers’ work easier. Yet it is also interoperable with Objective-C. By using the Objective-C runtime library, it allows C, Objective-C and Swift code to coexist in a single application.

Development tools

The most popular integrated development environments (IDE) are Xcode and Appcode. Both are powerful and user-friendly.

Xcode, developed by Apple, provides access to all the features that are essential to create a native iOS mobile application and for UI design, coding and testing. Tightly integrated with the Cocoa and Cocoa Touch frameworks, Xcode is an incredibly efficient environment for building apps for the Mac, iPhone and iPad, and it is free.

Appcode is an integrated development environment for Swift, Objective-C, C, C++ and JavaScript built on the IntelliJ IDEA platform from JetBrains. It offers many features that greatly increase developer productivity. Unlike Xcode, Appcode requires users to buy an annual license.

Interface creation tools

To build user interfaces, developers commonly use UIKit and SwiftUI.

UIKit is Apple’s core framework for building and managing graphical components in applications for iOS (iPhone), tvOS (Apple TV) and watchOS (Apple Watch).

SwiftUI is a more modern and sophisticated set of tools whose different approach does not yet offer all the features of UIKit, the framework that has gone hand in hand with the iPhone since nearly the beginning. Its adoption is still limited, but SwiftUI certainly has a bright future as it matures every year.

omponents of a tech stack for Android applications

Programming languages

Application developers for Android phones rely heavily on two programming languages: Java and Kotlin. Note that development in C# and C++ is also possible.

Java is an object-oriented language introduced at the end of the last century along with the Web. Originally developed by Sun Microsystems, it is now owned by Oracle. Inherently portable and cross-platform, it quickly found its place on Android (which is based on a Linux kernel) and has long been the favored language for this platform.

Kotlin is lighter and less verbose than Java, and was created by the company JetBrains. Widely adopted by developers then endorsed in 2019 by Google, it has become the most popular language on the platform. Kotlin is not limited to this platform however, as it also supports development for Linux, iOS, macOS, watchOS and tvOS. With the Kotlin Multiplatform Mobile SDK (KMM), you can use a single code base for the business logic of iOS and Android applications. You only need to write platform-specific code when necessary, such as to implement a native UI or when working with platform-specific APIs.

Development tools

Android Studio is the official IDE for the Android operating system. Built on the IntelliJ IDEA platform from JetBrains, it runs on Windows, macOS, Chrome OS and Linux. While its main function is to edit Java, Kotlin or C# code as well as XML configuration files for an Android application, you can also build the application’s interface with it. Android Studio comes with a Software Development Kit (SDK) that contains a variety of tools needed by developers, including a compiler, debugger, QEMU-based emulator, code samples, libraries, utilities and more. As the SDK also supports previous versions of the Android platform, our developers use it to fix and improve older or outdated applications.

Interface creation tools

Jetpack Compose is a new, modern toolkit that simplifies and speeds up native UI development. Based on the Kotlin language, it offers a powerful declarative programming model: just describe the UI, and Compose does the rest.

Tools for cross-platform development

In most cases, smartphone apps come in two flavors: iOS and Android. This choice covers the entire smartphone market and avoids stranding customers no matter their platform. On the other hand, this means developing and maintaining, at significant cost, two native applications in parallel. Though the two versions seem similar and offer identical functionalities, they each have in fact their own architecture and code that are not very portable.

This problem gave rise to the idea of designing tools with a code base common to both apps, necessitating just one development team. The two best-known tools for cross-platform mobile development are Xamarin and React Native, in addition to the very attractive new option that Google introduced in 2019: the open-source Flutter SDK.

Xamarin is a cross-platform development solution offered by Microsoft that allows you to reuse most of the same C# code on several platforms such as Android and iOS, but also tvOS, watchOS, macOS and Windows. However, you still have to write a layer of code specific to each platform using the native APIs. Because Xamarin integrates seamlessly with Visual Studio, C# developers stay in familiar territory. It produces compiled applications whose performance is close to that of native applications.

React Native is an open source framework by Facebook using JavaScript or TypeScript to create mobile applications. It allows accelerated development and provides the benefits of a large community of programmers. React Native uses a system’s interface components, giving applications a completely native appearance. However, this framework is not recommended for applications that use computing power intensively or have certain latency requirements.

Flutter is based on the Dart programming language launched by Google in 2011 and was designed from the start for mobile development. What sets this SDK apart is that it includes a graphical rendering engine in the mobile application; the display of the interface does not depend on the system components. One of the Flutter application’s advantages is that it offers a true 32/64-bit compilation for ARM processors, and therefore excellent performance.

Tools for developing hybrid Web applications

Because they are cross-platform in nature and generally quick to develop (tools allow prototypes to be built in record time), hybrid applications can do a lot -- but they can’t do everything, especially when it comes to performance. In most cases though, they are a perfectly acceptable choice, so no need to deploy the heavy artillery when a quick and tested solution exists. These applications are based on Web technologies, namely HTML5, CSS3 and JavaScript, with more or less limited access to native APIs via plug-ins (Cordova, Capacitor, Native Ionic). They are a kind of local Web application that is encapsulated in a native Web viewing application (UIWebView on iOS and WebView on Android).

Apache Cordova (formerly Phone Gap) is an open-source framework that runs applications based on HTML/CSS for the visual aspect and on JavaScript for the logic, and can access some hardware functions such as location (GPS), the accelerometer, the camera, etc.

Ionic, based on Apache Cordova and the AngularJS framework, is also open-source. It offers additional features for hybrid application developers, as well as UI components (Mobile UI Toolkit), which make the application look native.

Tools for developing Progressive Web Apps

There are no tools specific to the development of Progressive Web Apps. Programmers have a wide choice of editors to write the necessary HTML, CSS, JavaScript and JSON files. A PWA relies on Web APIs (web application programming interfaces) for access to hardware features, which is very limited as a result and varies between environments, as not all browsers are equal.

How much does it cost to develop a mobile application?

The cost of developing a mobile application can vary hugely. No two applications are the same, and much depends on how many specific needs they have to meet, and how simple or complex those needs are.

Tech Stack

Scope and complexity of the project

The real answer to the question of the cost of development is as prosaic as it is disappointing: it depends. While many variables come into play, the main ones are the scope and the complexity of the project, which impact development time, which, in turn, translates into dollars and cents. While the simplest applications can be developed for just 20,000$, more complex applications that fulfill many different functions and handle sensitive information can cost 500,000$ or more and require a year’s development time.

The more features the application has, the longer it takes to develop and the more expensive it will be. This said, in our experience, most mobile application projects tend to amount to 120,000$-200,000$ for an initial version, with 4 to 6 months’ development time.

If you don’t have that kind of budget, your best bet is to restrict your application’s scope and complexity. Start by defining your minimum viable product (MVP), i.e. the application that will meet your users’ basic needs, with features that are only strictly necessary or whose usefulness is established beyond a doubt.

There are many advantages to going for an MVP:

  • By sending your MVP to market quickly and inexpensively, you start generating revenue that will finance future development.
  • A functional application that is actually in use attracts investors more readily.
  • VAn MVP allows you to capitalize on your early users’ comments, suggestions and expressed needs to improve your application iteratively, instead of wasting money on features that will never actually be used.

Choosing your developers

our choice of developers is another important factor in the overall cost of a project. Your options are as numerous as they are varied, and each comes with its own advantages and drawbacks, which is the topic for a different day. You could choose a general application development company like Spiria, a company that specializes in mobile development, or even a free-lance developer. In certain specific circumstances, you could hire staff developers to perform the work in-house, which can be an interesting option. And, to make things even more complex, you must weigh the caliber of the developer(s) working on your project, i.e. their skills and experience. A senior developer may cost 130-150$ per hour, but may accomplish in one hour what might take five hours for a more junior developer at 40$ per hour. Which developer will save you time and headaches in the long run? Also, the market is globalized. You can hire local developers, or offshore your development to Australia, Ukraine, Indonesia, India, or anywhere else in the world, except for the Antarctic.

Each of these options carries its own price tag, the bulk of which consists in the developers’ hourly rate. Developers in India are paid a fraction of what North American developers make, which of course works out cheaper. At the end of the day, the question you should ask yourself is the following: Am I going to get my money’s worth? And as is the case for any other product or service, the right answer often is not the cheapest, or the lowest bidder.

Keep in mind that any application is a “living thing”, and that it’ll continue costing money throughout its lifecycle. The expense does not end on launch day: have you thought of the cost of maintenance, updates, upgrades, data storage, software licensing, or other external services, to name a few?

Common mistakes in mobile development


Lack of planning and strategy

Two of the main reasons for the prompt failure of a mobile application on the market is poor planning and a lack of strategy. To build an awesome app, you must have a well-developed concept and a robust development strategy right from the get-go. Have a look at the previous chapter, “Questions to ask before taking the plunge”.

Straying down a rabbit-hole during the development process will cost you valuable time as well as money. To avoid going hopelessly astray, you must have precise and detailed answers to the following questions: What, Who and How. The answers to these questions will provide you with a detailed roadmap and a solid foundation to ensure success and minimize risks.

Lack of client analysis

Do some market research related to your application. Don’t go it on a hunch. Analyze the needs, motivation, and current and future behaviours of your clients. Otherwise, you’ll waste a lot of time on an application that doesn’t meet user needs nor address an actual issue. Unless your application provides a crystal-clear benefit, it won’t matter that the most awesome design, the best interface and flawless development went into it. Your application will be considered irrelevant and meet with failure.

Customer research is what allows you to design and develop every aspect of the application based on real client needs and motivations, which in turn supports client engagement and loyalty every step of the way. Measuring expectations, uncovering new ones and knowing the strength of each makes it a cinch to prioritize development initiatives and concentrate on essential features -- the ones that guarantee success.

Inferior interface = disappointed users

Users expect mobile applications to provide simple, fluid and efficient interactions. They don’t want to have to figure it out. Sometimes, in a bid to be original and different, we’d be tempted to develop interfaces whose behaviour is different from what users expect, or from what they have been accustomed to from other applications. This would be a mistake; it just leads to frustration and irritation on the users’ part.

You definitely can’t afford to alienate your clients or risk losing them. Make sure to give them a positive experience based on an easy-to-understand hierarchy of information and predictable design elements, so they can easily browse through your application. That’s when the usability tests come into their own; they reveal potential friction points and ensure that the interface engages its target market.

Poor technological choices

Poor technological choices are a serious pitfall with costly consequences. They are also an insidious problem, since their ramifications can remain hidden long after the initial production launch of the application. For example, they can come to light only when you try to upgrade your application, port it to an initially unplanned system, or scale it up. In the worst case, you’ll have to start over from scratch. Since technological choices are made when you’re still on the starting-blocks, before a single line of code is written, you should think about them long and hard; otherwise, it may be too late to backtrack subsequently. Take the time to ask all the right questions about future and potential developments.

Poor execution

Your mobile application target market will not give you a second chance to make a first impression. Confusing interfaces, unruly application behaviour, bugs, crashes, and the likes, are so many reasons why your application could be dropped and deleted from users’ phones. The best way to thrill your clients and users is to provide them with a well-thought-out application developed by interface professionals who design according to the rules of the art, and by seasoned programmers whose output quality has been verified by a battery of tests. Skimping on other aspects of your application such as planning or quality assurance is never the solution. Sometimes, you’re better off waiting until the moment is right than releasing a flawed, poorly-executed application; it’ll save you a lot of money!

Ready to take the leap?

Mobile app success

Do you have a mobile application project in mind? Spiria can help you turn it into a product that will find its audience. We have wide-ranging experience in mobile development, multidisciplinary teams, and a mastery of every step, from fleshing out your initial idea to supporting the finished application. Still have questions? Don’t hesitate to contact our development team.

Share this article: