If you make the all parameters as optional, I suggest to check them to make sure they are legal input if session is None. Also, can we use None to replace "" in default values??