done: default_args
todo: also need to write some test cases
fix: better comment on default_args