add functools.wraps in print_enter_exit