https://medium.com/@jeetonweb/mastering-java-classes-and-interfaces-a-comprehensive-guide-with-examples-c1eb3ee23d19