https://medium.com/better-programming/how-to-define-function-parameters-as-positional-keyword-or-both-in-python-8753ca2ac5ca