https://medium.com/@aichalaafia1/java-for-beginners-a-step-by-step-guide-to-learning-the-69bd3c434f83