https://medium.com/@ffirat.ggeldi/step-by-step-guide-to-building-an-application-with-programming-fcac07269c