https://medium.com/javarevisited/maximize-your-java-skills-10-must-know-tips-and-techniques-d8923d244b81