https://medium.com/javarevisited/why-having-fewer-arguments-matter-and-how-it-affects-maintainability-8680459d0742