And finally, why do you default the arguments to `None` if the function will fail horribly when they are `None`? IMO all should be required.