https://medium.com/@kasthurisinghekdpk/the-essentials-of-java-programming-a-comprehensive-guide-f2800aeadd0b