diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000000000000000000000000000000000000..24d904b54485b742a1d2ebd8f027b093a011fac7
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,71 @@
+extern crate rand;
+
+use std::io;
+use std::cmp::Ordering;
+use rand::Rng;
+
+fn main() {
+    println!("Guess the number!");
+
+    let secret_number = rand::thread_rng().gen_range(1, 101);
+
+    let mut tries_counter : u32 = 0; 
+
+    //println!("The secret number is: {}", secret_number);
+
+    loop {
+
+        // Get the value from inside the Ok, else print the error
+        let guess = match get_input() {
+            Ok(num) => num,
+            Err(e) => {
+                println!("{}", e);
+                continue;
+            }
+        };
+
+        println!("You guessed: {}", guess);
+
+        tries_counter += 1;
+
+        match guess.cmp(&secret_number) {
+            Ordering::Less    => println!("Too small!"),
+            Ordering::Greater => println!("Too big!"),
+            Ordering::Equal   => {
+                println!("You win!");
+                println!("Total number of attempts: {}", tries_counter);
+                break;
+            }
+        }
+
+        println!("Attempts so far: {}\n ", tries_counter);
+
+    }
+}
+
+
+fn get_input() -> Result<u32, String> {
+
+    let mut text_input = String::new();
+
+    println!("Please input your guess.");
+
+    /*
+     Instead of using the expect,
+     save and return potential error
+     */
+        let input = io::stdin()
+        .read_line(&mut text_input);
+    
+    match input {
+        Ok(_) => (),
+        Err(e) => return Err(format!("{}", e)),
+    }
+
+    match text_input.trim().parse::<u32>() {
+        Ok(num) => return Ok(num),
+        Err(e) => {
+            return Err(format!("in parsing u32, {}", e));
+        }
+    };
+}
\ No newline at end of file