https://medium.com/@sitharawanigasooriya_/a-guide-to-handling-edge-cases-in-software-solutions-2ed701c680a7