https://medium.com/@hendurhance/getting-started-with-method-chaining-in-object-oriented-programming-b3fd60bffe1e