Now that we have a Click command-line tool, let's start enhancing our tool to be a little bit more friendly. One of the things that you can do here is you can define the type for what you want to pass. Click supports saying, hey, I want to pass a flag that is a path, and I want to make sure that when I'm passing that, make sure they that it exists. This gives you more and more thorough error reporting. I've saved this already, I'm going to go back to my terminal. If I say for example, python Linter.py, and then I pass some path CSB, something that obviously doesn't exist, I'm going to get an error saying, hey, this is an invalid value for filename because the path some/path.csv does not exist. This is very useful for anyone using command-line tools because it allows you to do a very good error reporting where it's telling you exactly what you need, and what's receiving, why is not correct, and what it would need instead. Instead, we would need something that effectively exists. That's something useful that doesn't take too much effort. Any sort of a semi-advanced option, you can have. Another thing that we didn't went into detail is that you can also add some options. We're going to do an option. It's not going to do much, but we're going to just put it here, so that we can show you how it works. I'm going to add an option in the Click framework calls these options. I'm going to say, for example, verbose, which is usually something that it's done when you want to increase the verbosity in the output. We can give it a -v for something that like an alias, you can actually use this as an alias. When I say is_flag equals true, this is going to be now a Boolean. Now the one thing that you need to do is right here main, you now need to accept verbose. Verbose is going to be passed in, and now we can say if verbose, we can say print in verbose mode. I'm going to save that. Now, this is going to do two things, it's going to give us extra items on the help menu, and we're going to be able to conditionalize our printing for more verbosity in our tool. When we go back to the command line, we're going to say python linter.py --help. You can see that now we have extra options, and you see this -v, --verbose, because we have alias both. That means that both will do the same work. If we do python linter.py, and this time with something that does exist, that should still work, and then we can pass in a --verbose, and we can see that you will get and in verbose mode, which is where we want it. Now, that's all good, and that's great. Another advanced option that you might want to use is instead of using print statements like I've used here, you can use functionality from Click called Click echo. Click echo does the same work or similar work, complies with the same responsibilities as printing, but it ensures that it will work everywhere. See if you want to distribute your tool on a week on Windows systems as well as Linux and OS 10, well, this is a very good way of ensuring that your tool will work perfectly regardless of where it's being executed. Additionally, it will deal very nicely with Unicode. If you have anything that is doing Unicode, you won't have to deal with those right here, Click will take care of those. That will now change our output here. If we run python linter, you can see that the output is the same. That is just ensuring that your output will remain consistent regardless of the system where it's running. That's it. Those are a few of the extra more advanced options that you want to use. The Click the path, to ensure that the path exists. More options that you can alias and that you can indicate that it's a flag, and click that echo to support consistent reporting on the terminal.