CLN: Use sentinel values instead of mutable default arguments
From [Quantified Code](https://www.quantifiedcode.com/):

Mutable list or dictionary used as default argument to a method or function. Python creates a single persistent object and uses it for every subsequent call in which the argument is left empty. This can cause problems if the program was expecting the function to return a new list or dictionary after every call. Use a sentinel value to denote an empty list or dictionary.

ok, but really need to limit scope to tested code, and need to be really careful changing the tests
 Should be all set now. 
 this is fine. ping when green.
 All checks have passed.
 thanks!
