Prototypes and Implementation
https://cplusplus.com/articles/yAqpX9L8/