 So you wrote your first movement control code, it works and you're happy, but you want to know if you can make it better. Not a problem. Now the first thing that I would recommend is the variable to control speed. Right now you can see that x is set to negative 1 and positive 1, but the cube moves way too fast. Now previously we fixed this by changing 1 and negative 1 to something like negative 0.01 and 0.01. But an easier way to fix this is to make a variable up here for speed, then multiply it to the x-translate. To multiply something in code, just use an asterisk. This way when you play the game, you can change the variable to test different speeds until you find the one you like. Ok, now our code works really well if you know the player likes to use WASD to control. But these days some people prefer to just use a game controller. And some people just prefer to use the arrow keys instead. You have no idea what controls your player is most comfortable with. Now a lot of beginners will try and solve this problem by manually adding all the controls into their if statement. So they'll type something like if you press A or if you press the left arrow key, then go left. And it would work if you prefer that then go for it. But Unity already has a built in variable that does all that for you. The variable's name is input.getAxisRawHorizontal. Don't get confused by the long name. Remember, this is just a number, just like the x-variable up here. Horizontal is the command for AD, left arrow, right arrow, and left and right on the controller. So all this code where you're just saying x equals this and x equals that, else x equals zero, you can replace all of that with x equals getAxisHorizontal. If you save the game and run it now, not only will x equal negative one when you press A and one when you press D, it'll do the same thing when you press the left and right arrow keys and it will respond to left and right on the controller. Right now I have an Xbox controller plugged in. And something that you might notice is on a controller we get all the values in between. If I tilt the stick all the way to the right, we get x equals one. But if I only tilt the stick halfway, x will be around 0.5 instead. So on the stick, you can control going full speed or somewhere in between, depending on how far the stick is pushed. Now remember, at the end of the day, x just equals this. So you don't have to use a variable if you don't want to. I just thought it would be easier for you to understand if you could see it. But there's nothing stopping you from getting rid of x and directly plugging the input access into Translate. If you had a 3D game where you also needed to control forward and backwards, you just copy this code into the Z value and change this from horizontal to vertical and bam. Now you have full three dimensional control for both WASD, the arrow keys and a game controller. And it all basically fits into one line of code. So that is how controls work in Unity. Hope that helps and as always, hope you have a fantastic day and I'll see you around.