diff --git a/main.rs b/main.rs
index 1cd2c45c8457a376ef6f37fd14ff3beac495322c..155d37e31727087425488b92c3c42bf7d66ac99a 100644
--- a/main.rs
+++ b/main.rs
@@ -9,7 +9,6 @@ use std::io::*;
 use std::env::*;
 use std::time::Duration;
 use std::to_num::*;
-use std::hashmap::HashMap;
 use std::process;
 
 macro_rules! readln {
@@ -139,6 +138,22 @@ impl<'a> Command<'a> {
             main: Box::new(|_: &Vec<String>| {}),
         });
 
+        commands.push(Command {
+            name: "free",
+            help: "Show memory information\n    free",
+            main: Box::new(|_: &Vec<String>| {
+                if let Some(mut file) = File::open("memory:") {
+                    let mut string = String::new();
+                    match file.read_to_string(&mut string) {
+                        Some(_) => println!("{}", string),
+                        None => println!("Failed to read: memory:"),
+                    }
+                } else {
+                    println!("Failed to open file: memory:");
+                }
+            }),
+        });
+
         commands.push(Command {
             name: "if",
             help: "",
@@ -174,6 +189,22 @@ impl<'a> Command<'a> {
             }),
         });
 
+        commands.push(Command {
+            name: "ps",
+            help: "Show process list\n    ps",
+            main: Box::new(|_: &Vec<String>| {
+                if let Some(mut file) = File::open("context:") {
+                    let mut string = String::new();
+                    match file.read_to_string(&mut string) {
+                        Some(_) => println!("{}", string),
+                        None => println!("Failed to read: context:"),
+                    }
+                } else {
+                    println!("Failed to open file: context:");
+                }
+            }),
+        });
+
         commands.push(Command {
             name: "pwd",
             help: "To output the path of the current directory\n    pwd",
@@ -342,7 +373,7 @@ impl<'a> Command<'a> {
 
         // TODO: Someone should implement FromIterator for HashMap before
         //       changing the type back to HashMap
-        let mut command_helper: BTreeMap<String, String> = commands
+        let command_helper: BTreeMap<String, String> = commands
             .iter()
             .map(|c| (c.name.to_string(), c.help.to_string()))
             .collect();