Initially, I used the help of the website provided (https://rust-cli.github.io/book/tutorial/index.html) to set up the initial code and get a feel for the project. I opted not to implement grrs, as file reading wasn't in the scope of my project and I already had figured out how output without it. I wanted to implement some sort of game, like a guessing/narrowing it down game, without getting too crazy. I am attempting to implement a separate command for each function, where the user may input any number of commands to alter the output. So, when cargo run is ran, it will explain all the available commands. This acts as a 'help' command. Pretty simple, all I did was wrap the arg with a subcommand. To do this, I started with a random number generator. (https://rustmeup.com/building-cli-tools-with-rust) This wasn't too bad, I edited the above to help me understand how to write a function, and some knowledge of the foundation of the CLI process. I found clap and rand for cargo, which I used for the rng. I used some args I honestly might have not even needed but I added what I figured could be useful later. Next, I thought of a little game to play. I call it 'guess'. The aim is to use the 'genrand' command with one additional argument, the player's guess. It should take input for the 'difficulty' (just the max value) and the player's guess. The player will then continue to guess until they get it, and a score will be displayed. This took some work because I was struggling to figure out how to get the genrand command to work concurrently with another command. Additionally, I kept having it panic and exit out. This was because clap does not allow multiple positional arguments (that I could figure out, anyway). So, I had to mess around with the command syntax to make it work. Also, for some reason the while loop would not work. Not idea why, so I had to explore loop {}. In the end, the command requires multiple inputs, rather than the singular one I intended, but functions the same way. This one was definitely the most difficult. Next I added 'coinflip' and 'roll'. Coinflip is intended to display heads or tails at random, and will optionally accept a parameter for the number of coins you wish to flip (default 1). Roll will roll a number of dice (default 1) and a number of sides (default 6). The coinflip was implemented without any major hiccups. The dice roll I implemented pretty easily as well because it's basically just a multi-sided coinflip with an extra argument. I tried to implement something into the command that allowed for you to roll multiple dice of different sides at one time (1d6, 1d10, 1d20, for example) but this ended up being incredibly frustrating, and ultimately not necessary as even as a QoL change, you would just run the command multiple times and change sides. Finally I added createid which randomly generates an id of specified length, which I also didn't struggle with too much. With a bit more time investment I would also implement a command that adds letters or characters to an ID for added value. Thank you for the extensions, I hope this is interesting. :)