diff --git a/a2_guessing_game/src/main.rs b/a2_guessing_game/src/main.rs
index fee524172b31766afec6d5599775839dd5ca079c..ba4a668ca900d79264a14cd81f8a3445f32a32fa 100644
--- a/a2_guessing_game/src/main.rs
+++ b/a2_guessing_game/src/main.rs
@@ -3,6 +3,9 @@ extern crate colored;
 
 use std::io;    //standard in-out
 use std::cmp::Ordering;
+use std::cmp::max;
+use std::collections::HashMap;
+
 use rand::Rng;
 use std::io::Write; //seemingly needed to use io::stdout().flush()
 use colored::*;
@@ -23,9 +26,46 @@ fn get_input() -> Result<u32, String> {
 }
 
 fn print_guesses(v: &Vec<(u32, String)>) {
-    println!("Results:\nAttempt | Guess");
-    for g in v {
+    let iterations = 2;
+    for i in 0..iterations { 
+        println!("\nResults: Printing All\nAttempt | Guess");
+        for g in v {
+            println!("      {} | {}", g.0, g.1);
+        }
+    }
+}
+
+fn print_the_last_three_guesses_in_backwards_order_really_nicely(v: &Vec<(u32, String)>) {
+    let mut count = 0;     
+    println!("\nResults: Printing Last Three\nAttempt | Guess");
+    for g in v.iter().rev() {
         println!("      {} | {}", g.0, g.1);
+        count += 1;
+        if count == 3 { break; }
+    }
+}
+
+fn print_hashmap(hm: &HashMap<u32, String>) {
+    println!("\nResults: Printing HashMap\nAttempt | Guess");
+    for m in hm{
+        println!("      {:?} | {:?}", m.0, m.1);
+    }
+}
+
+fn print_hashmap_last_three(hm: &HashMap<u32, String>) {
+    println!("\nResults: Printing Last Three in Hashmap\nAttempt | Guess");  
+    let mut entries = 0;
+    for m in hm.iter() {
+        entries += 1;
+    }
+    //let ln: u32 = hm.len(); //Give error because hm.len() is usize, not u32
+     
+    for i in (max(entries-2, 1)..entries+1).rev() { 
+        let mut item = hm.get(&i);
+        match item {
+            Some(num) => println!("      {} | {}", i, num),
+            None => println!("Nothing!"),
+        };
     }
 }
 
@@ -40,6 +80,10 @@ fn main() {
     //Vector to hold all guesses, first to last.
     let mut guesses: Vec<(u32, String)>= Vec::new();
     let mut guess_pair: (u32, String);
+    
+    //Hashmap
+    let mut guess_hashmap = HashMap::new();
+
     let mut guess: u32;
     let mut attempts = 0;
 
@@ -56,8 +100,13 @@ fn main() {
         };
          
         attempts += 1;
+        
+        //Vector
         guess_pair = (attempts, guess.to_string());
         guesses.push(guess_pair);
+
+        //Hashmap
+        guess_hashmap.insert(attempts, guess.to_string());
         
         println!("\nYou guessed: {}!", guess);
         print!("That's ");
@@ -78,7 +127,10 @@ fn main() {
         }
         println!("\nYou've guessed {} time(s) already!", attempts.to_string().yellow())
     }
-    //println!("{:?}", guesses);
+
     print_guesses(&guesses);
+    print_the_last_three_guesses_in_backwards_order_really_nicely(&guesses); 
+    print_hashmap(&guess_hashmap);
+    print_hashmap_last_three(&guess_hashmap);
 }