diff --git a/src/acpi/aml/dataobj.rs b/src/acpi/aml/dataobj.rs
index 7bb50d3cc97c55e1b4befc913fe16d412044646a..fa9710dac00178a9670f2802ff0bbf3d8c8d6687 100644
--- a/src/acpi/aml/dataobj.rs
+++ b/src/acpi/aml/dataobj.rs
@@ -1,6 +1,5 @@
 use collections::vec::Vec;
 use collections::string::String;
-use collections::btree_map::BTreeMap;
 
 use super::AmlError;
 use super::parser::{ AmlParseType, ParseResult, AmlExecutionContext, ExecutionState };
diff --git a/src/acpi/aml/mod.rs b/src/acpi/aml/mod.rs
index 7e37d087377ca1f54be6018be6a534465cb4415c..d1610317d4be9297b7174f8fec404036c729e693 100644
--- a/src/acpi/aml/mod.rs
+++ b/src/acpi/aml/mod.rs
@@ -1,11 +1,7 @@
 //! # AML
 //! Code to parse and execute AML tables
 
-use alloc::boxed::Box;
 use collections::string::String;
-use collections::vec::Vec;
-use collections::btree_map::BTreeMap;
-use core::fmt::Debug;
 use core::str::FromStr;
 
 use super::sdt::Sdt;
@@ -24,7 +20,7 @@ mod type1opcode;
 mod type2opcode;
 mod parser;
 
-use self::parser::{ ParseResult, AmlExecutionContext };
+use self::parser::AmlExecutionContext;
 use self::termlist::parse_term_list;
 pub use self::namespace::AmlValue;
 
diff --git a/src/acpi/aml/namedobj.rs b/src/acpi/aml/namedobj.rs
index c7d263602c4b6b7a1f53d4808fb228c081121573..e48330227e851c473bc67a7cb0d2c7ea8140e096 100644
--- a/src/acpi/aml/namedobj.rs
+++ b/src/acpi/aml/namedobj.rs
@@ -1,15 +1,11 @@
 use alloc::boxed::Box;
 use collections::string::String;
-use collections::vec::Vec;
-use core::str::FromStr;
-
-use collections::btree_map::BTreeMap;
 
 use super::AmlError;
 use super::parser::{ AmlParseType, ParseResult, AmlParseTypeGeneric, AmlExecutionContext, ExecutionState };
 use super::namespace::{ AmlValue, ObjectReference, FieldSelector, Method, get_namespace_string, Accessor };
 use super::namestring::{parse_name_string, parse_name_seg};
-use super::termlist::{parse_term_arg, parse_term_list, parse_object_list};
+use super::termlist::{parse_term_arg, parse_object_list};
 use super::pkglength::parse_pkg_length;
 use super::type2opcode::parse_def_buffer;
 
@@ -159,9 +155,8 @@ fn parse_def_bank_field(data: &[u8],
         bank_selector: Box::new(bank_value.val)
     };
 
-    let field_list = parse_field_list(
-        &data[3 + pkg_length_len + region_name.len + bank_name.len + bank_value.len ..
-              2 + pkg_length], ctx, selector, &mut flags)?;
+    parse_field_list(&data[3 + pkg_length_len + region_name.len + bank_name.len + bank_value.len ..
+                           2 + pkg_length], ctx, selector, &mut flags)?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -191,7 +186,7 @@ fn parse_def_create_bit_field(data: &[u8],
         source_buf: Box::new(source_buf.val),
         index: Box::new(bit_index.val),
         length: Box::new(AmlValue::IntegerConstant(1))
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -221,7 +216,7 @@ fn parse_def_create_byte_field(data: &[u8],
         source_buf: Box::new(source_buf.val),
         index: Box::new(bit_index.val),
         length: Box::new(AmlValue::IntegerConstant(8))
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -251,7 +246,7 @@ fn parse_def_create_word_field(data: &[u8],
         source_buf: Box::new(source_buf.val),
         index: Box::new(bit_index.val),
         length: Box::new(AmlValue::IntegerConstant(16))
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -311,7 +306,7 @@ fn parse_def_create_qword_field(data: &[u8],
         source_buf: Box::new(source_buf.val),
         index: Box::new(bit_index.val),
         length: Box::new(AmlValue::IntegerConstant(64))
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -342,7 +337,7 @@ fn parse_def_create_field(data: &[u8],
         source_buf: Box::new(source_buf.val),
         index: Box::new(bit_index.val),
         length: Box::new(num_bits.val)
-    });
+    })?;
     
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -379,7 +374,7 @@ fn parse_def_data_region(data: &[u8],
             write: |x, y| ()
         },
         accessed_by: None
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -402,7 +397,7 @@ fn parse_def_event(data: &[u8],
     let name = parse_name_string(&data[2..], ctx)?;
     
     let local_scope_string = get_namespace_string(ctx.scope.clone(), name.val);
-    ctx.add_to_namespace(local_scope_string, AmlValue::Event(0));
+    ctx.add_to_namespace(local_scope_string, AmlValue::Event(0))?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -431,7 +426,7 @@ fn parse_def_device(data: &[u8],
     
     parse_object_list(&data[2 + pkg_length_len + name.len .. 2 + pkg_length], &mut local_ctx)?;
 
-    ctx.add_to_namespace(local_scope_string, AmlValue::Device(local_ctx.namespace_delta.clone()));
+    ctx.add_to_namespace(local_scope_string, AmlValue::Device(local_ctx.namespace_delta.clone()))?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -480,7 +475,7 @@ fn parse_def_op_region(data: &[u8],
             write: |x, y| ()
         },
         accessed_by: None
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -525,7 +520,7 @@ fn parse_def_field(data: &[u8],
 
     let selector = FieldSelector::Region(name.val.get_as_string()?);
 
-    let field_list = parse_field_list(&data[3 + pkg_length_len + name.len .. 2 + pkg_length], ctx, selector, &mut flags)?;
+    parse_field_list(&data[3 + pkg_length_len + name.len .. 2 + pkg_length], ctx, selector, &mut flags)?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -574,8 +569,8 @@ fn parse_def_index_field(data: &[u8],
         data_selector: data_name.val.get_as_string()?
     };
 
-    let field_list = parse_field_list(
-        &data[3 + pkg_length_len + idx_name.len + data_name.len .. 2 + pkg_length], ctx, selector, &mut flags)?;
+    parse_field_list(&data[3 + pkg_length_len + idx_name.len + data_name.len .. 2 + pkg_length],
+                     ctx, selector, &mut flags)?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -642,7 +637,7 @@ fn parse_field_element(data: &[u8],
             flags: flags.clone(),
             offset: offset.clone(),
             length: field.val.length
-        });
+        })?;
 
         *offset += field.val.length;
         field.len
@@ -681,7 +676,7 @@ fn parse_named_field(data: &[u8],
 
     Ok(AmlParseTypeGeneric {
         val: NamedField { name, length },
-        len: 4 + length_len
+        len: name_seg_len + length_len
     })
 }
 
@@ -796,7 +791,7 @@ fn parse_def_method(data: &[u8],
         serialized,
         sync_level,
         term_list: term_list.to_vec()
-    }));
+    }))?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -821,7 +816,7 @@ fn parse_def_mutex(data: &[u8],
     let sync_level = flags & 0x0F;
     
     let local_scope_string = get_namespace_string(ctx.scope.clone(), name.val);
-    ctx.add_to_namespace(local_scope_string, AmlValue::Mutex((sync_level, None)));
+    ctx.add_to_namespace(local_scope_string, AmlValue::Mutex((sync_level, None)))?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -858,7 +853,7 @@ fn parse_def_power_res(data: &[u8],
         system_level,
         resource_order,
         obj_list: local_ctx.namespace_delta.clone()
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -897,7 +892,7 @@ fn parse_def_processor(data: &[u8],
         proc_id: proc_id,
         p_blk: if p_blk_len > 0 { Some(p_blk_addr) } else { None },
         obj_list: local_ctx.namespace_delta.clone()
-    });
+    })?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
@@ -925,7 +920,7 @@ fn parse_def_thermal_zone(data: &[u8],
     let mut local_ctx = AmlExecutionContext::new(local_scope_string.clone());    
     parse_object_list(&data[2 + pkg_len_len + name.len .. 2 + pkg_len], &mut local_ctx)?;
     
-    ctx.add_to_namespace(local_scope_string, AmlValue::ThermalZone(local_ctx.namespace_delta.clone()));
+    ctx.add_to_namespace(local_scope_string, AmlValue::ThermalZone(local_ctx.namespace_delta.clone()))?;
 
     Ok(AmlParseType {
         val: AmlValue::None,
diff --git a/src/acpi/aml/namespace.rs b/src/acpi/aml/namespace.rs
index 0862e723e4839be8b02c95a210d889cb5642f304..8e9e61b5871ff99fb29191348ee3c97df5aa175e 100644
--- a/src/acpi/aml/namespace.rs
+++ b/src/acpi/aml/namespace.rs
@@ -1,9 +1,7 @@
 use alloc::boxed::Box;
 use collections::string::String;
 use collections::vec::Vec;
-use collections::btree_map::BTreeMap;
 
-use core::str::FromStr;
 use core::fmt::{Debug, Formatter, Error};
 
 use super::termlist::parse_term_list;
diff --git a/src/acpi/aml/namespacemodifier.rs b/src/acpi/aml/namespacemodifier.rs
index 7d081958a8bf4b0b28a2f16c39028694bca92caf..059a93c72837e360c0047ad6b4de27e70ce1482d 100644
--- a/src/acpi/aml/namespacemodifier.rs
+++ b/src/acpi/aml/namespacemodifier.rs
@@ -1,11 +1,6 @@
-use alloc::boxed::Box;
-use collections::string::String;
-use collections::vec::Vec;
-use collections::btree_map::BTreeMap;
-
 use super::AmlError;
-use super::parser::{AmlParseType, ParseResult, AmlParseTypeGeneric, AmlExecutionContext, ExecutionState};
-use super::namespace::{AmlValue, ObjectReference, FieldSelector, get_namespace_string};
+use super::parser::{AmlParseType, ParseResult, AmlExecutionContext, ExecutionState};
+use super::namespace::{AmlValue, ObjectReference, get_namespace_string};
 use super::pkglength::parse_pkg_length;
 use super::namestring::parse_name_string;
 use super::termlist::parse_term_list;
diff --git a/src/acpi/aml/namestring.rs b/src/acpi/aml/namestring.rs
index 389e650111f19b5bdbba0f777c0fb9778c923700..8464b6ccf8fbf932c6ea5cf8607637ec4e0f47a9 100644
--- a/src/acpi/aml/namestring.rs
+++ b/src/acpi/aml/namestring.rs
@@ -1,10 +1,9 @@
 use collections::vec::Vec;
 use collections::string::String;
-use collections::btree_map::BTreeMap;
 
 use super::AmlError;
-use super::parser::{AmlParseType, ParseResult, AmlParseTypeGeneric, AmlExecutionContext, ExecutionState};
-use super::namespace::{AmlValue, ObjectReference, FieldSelector, get_namespace_string};
+use super::parser::{AmlParseType, ParseResult, AmlExecutionContext, ExecutionState};
+use super::namespace::AmlValue;
 use super::dataobj::{parse_arg_obj, parse_local_obj};
 use super::type2opcode::parse_type6_opcode;
 
diff --git a/src/acpi/aml/parser.rs b/src/acpi/aml/parser.rs
index a762ebab46408250d79543832e2ed456c81ab8f2..758dd174b4c0ee0566b5b70e1c72d686c90d307c 100644
--- a/src/acpi/aml/parser.rs
+++ b/src/acpi/aml/parser.rs
@@ -113,7 +113,7 @@ impl AmlExecutionContext {
         match name {
             AmlValue::None => (),
             AmlValue::ObjectReference(r) => match r {
-                ObjectReference::ArgObj(i) => (),
+                ObjectReference::ArgObj(_) => (),
                 ObjectReference::LocalObj(i) => self.local_vars[i as usize] = value,
                 _ => ()
             },
diff --git a/src/acpi/aml/termlist.rs b/src/acpi/aml/termlist.rs
index 9152f56d44a66ad39a7f671b7c10e580940d72e1..700fa0052a7c71e6623c79a9716d817d52cde3b9 100644
--- a/src/acpi/aml/termlist.rs
+++ b/src/acpi/aml/termlist.rs
@@ -1,11 +1,8 @@
-use alloc::boxed::Box;
-use collections::string::String;
 use collections::vec::Vec;
-use collections::btree_map::BTreeMap;
 
 use super::AmlError;
-use super::parser::{ AmlParseType, ParseResult, AmlParseTypeGeneric, AmlExecutionContext, ExecutionState };
-use super::namespace::{AmlValue, ObjectReference, FieldSelector, get_namespace_string};
+use super::parser::{ AmlParseType, ParseResult, AmlExecutionContext, ExecutionState };
+use super::namespace::{AmlValue, get_namespace_string};
 use super::namespacemodifier::parse_namespace_modifier;
 use super::namedobj::parse_named_obj;
 use super::dataobj::{parse_data_obj, parse_arg_obj, parse_local_obj};
diff --git a/src/acpi/aml/type1opcode.rs b/src/acpi/aml/type1opcode.rs
index ee9d8cba4eee4466e07f5a54240b81e82f631713..3493935e960de8d55c7ea5553da9d94b768f934b 100644
--- a/src/acpi/aml/type1opcode.rs
+++ b/src/acpi/aml/type1opcode.rs
@@ -1,11 +1,6 @@
-use alloc::boxed::Box;
-use collections::string::String;
-use collections::vec::Vec;
-use collections::btree_map::BTreeMap;
-
 use super::AmlError;
 use super::parser::{AmlParseType, ParseResult, AmlExecutionContext, ExecutionState};
-use super::namespace::{AmlValue, ObjectReference};
+use super::namespace::AmlValue;
 use super::pkglength::parse_pkg_length;
 use super::termlist::{parse_term_arg, parse_term_list};
 use super::namestring::{parse_name_string, parse_super_name};
@@ -248,7 +243,7 @@ fn parse_def_reset(data: &[u8],
     parser_opcode_extended!(data, 0x26);
 
     let object = parse_super_name(&data[2..], ctx)?;
-    let event = ctx.get(object.val.clone()).get_as_event()?;
+    ctx.get(object.val.clone()).get_as_event()?;
 
     ctx.modify(object.val.clone(), AmlValue::Event(0));
 
diff --git a/src/acpi/aml/type2opcode.rs b/src/acpi/aml/type2opcode.rs
index 49ded057a65b4a5a97e37b38d31ae1da0f3fb300..00924de83b2514058a18a4e8688dd32cd6d7a090 100644
--- a/src/acpi/aml/type2opcode.rs
+++ b/src/acpi/aml/type2opcode.rs
@@ -1,7 +1,6 @@
 use alloc::boxed::Box;
 use collections::string::String;
 use collections::vec::Vec;
-use collections::btree_map::BTreeMap;
 
 use super::AmlError;
 use super::parser::{AmlParseType, ParseResult, AmlExecutionContext, ExecutionState};
@@ -153,7 +152,7 @@ pub fn parse_def_package(data: &[u8],
     if elements.len() > numelements {
         elements = elements[0 .. numelements].to_vec();
     } else if numelements > elements.len() {
-        for i in 0..numelements - elements.len() {
+        for _ in 0..numelements - elements.len() {
             elements.push(AmlValue::Uninitialized);
         }
     }
@@ -187,7 +186,7 @@ pub fn parse_def_var_package(data: &[u8],
     if elements.len() > numelements {
         elements = elements[0 .. numelements].to_vec();
     } else if numelements > elements.len() {
-        for i in 0..numelements - elements.len() {
+        for _ in 0..numelements - elements.len() {
             elements.push(AmlValue::Uninitialized);
         }
     }
@@ -365,12 +364,6 @@ fn parse_def_acquire(data: &[u8],
             }
         }
     }
-    
-    Ok(AmlParseType {
-        val: AmlValue::Uninitialized,
-        len: 4 + obj.len
-    })
-        // This should never run
 }
 
 fn parse_def_increment(data: &[u8],
@@ -1056,11 +1049,6 @@ fn parse_def_wait(data: &[u8],
             }
         }
     }
-    
-    Ok(AmlParseType {
-        val: AmlValue::Uninitialized,
-        len: 2 + obj.len + timeout_obj.len
-    })
 }
 
 fn parse_def_cond_ref_of(data: &[u8],
@@ -1353,11 +1341,11 @@ fn parse_def_match(data: &[u8],
 
                 match second_operation {
                     MatchOpcode::MTR => (),
-                    MatchOpcode::MEQ => if val != i { continue },
-                    MatchOpcode::MLE => if val > i { continue },
-                    MatchOpcode::MLT => if val >= i { continue },
-                    MatchOpcode::MGE => if val < i { continue },
-                    MatchOpcode::MGT => if val <= i { continue }
+                    MatchOpcode::MEQ => if val != j { continue },
+                    MatchOpcode::MLE => if val > j { continue },
+                    MatchOpcode::MLT => if val >= j { continue },
+                    MatchOpcode::MGE => if val < j { continue },
+                    MatchOpcode::MGT => if val <= j { continue }
                 }
 
                 return Ok(AmlParseType {
@@ -1384,11 +1372,11 @@ fn parse_def_match(data: &[u8],
 
                 match second_operation {
                     MatchOpcode::MTR => (),
-                    MatchOpcode::MEQ => if val != i { continue },
-                    MatchOpcode::MLE => if val > i { continue },
-                    MatchOpcode::MLT => if val >= i { continue },
-                    MatchOpcode::MGE => if val < i { continue },
-                    MatchOpcode::MGT => if val <= i { continue }
+                    MatchOpcode::MEQ => if val != j { continue },
+                    MatchOpcode::MLE => if val > j { continue },
+                    MatchOpcode::MLT => if val >= j { continue },
+                    MatchOpcode::MGE => if val < j { continue },
+                    MatchOpcode::MGT => if val <= j { continue }
                 }
 
                 return Ok(AmlParseType {
@@ -1416,11 +1404,11 @@ fn parse_def_match(data: &[u8],
 
                 match second_operation {
                     MatchOpcode::MTR => (),
-                    MatchOpcode::MEQ => if val != i { continue },
-                    MatchOpcode::MLE => if val > i { continue },
-                    MatchOpcode::MLT => if val >= i { continue },
-                    MatchOpcode::MGE => if val < i { continue },
-                    MatchOpcode::MGT => if val <= i { continue }
+                    MatchOpcode::MEQ => if val != j { continue },
+                    MatchOpcode::MLE => if val > j { continue },
+                    MatchOpcode::MLT => if val >= j { continue },
+                    MatchOpcode::MGE => if val < j { continue },
+                    MatchOpcode::MGT => if val <= j { continue }
                 }
 
                 return Ok(AmlParseType {
diff --git a/src/acpi/mod.rs b/src/acpi/mod.rs
index 39e2799627a6b24cf31f6cf9621965032ee68c13..6adae4c1a7b0dd971cd2674aad2adc52b40c12bf 100644
--- a/src/acpi/mod.rs
+++ b/src/acpi/mod.rs
@@ -5,11 +5,10 @@ use core::intrinsics::{atomic_load, atomic_store};
 use core::sync::atomic::Ordering;
 use collections::btree_map::BTreeMap;
 use collections::string::String;
-use alloc::boxed::Box;
 
 use syscall::io::{Io, Pio};
 
-use spin::{Mutex, RwLock};
+use spin::RwLock;
 
 use device::local_apic::LOCAL_APIC;
 use interrupt;
diff --git a/src/device/hpet.rs b/src/device/hpet.rs
index 9307fc5129a4a7b6eb3cec66930acc8df8134a95..3490dee5b1697ededa3bc7fdbb3c4783b7ef06ba 100644
--- a/src/device/hpet.rs
+++ b/src/device/hpet.rs
@@ -1,8 +1,3 @@
-use core::intrinsics::{volatile_load, volatile_store};
-
-use memory::Frame;
-use paging::{entry, ActivePageTable, PhysicalAddress, Page, VirtualAddress};
-
 use acpi::hpet::Hpet;
 
 static LEG_RT_CNF: u64 = 2;
@@ -14,8 +9,8 @@ static TN_INT_ENB_CNF: u64 = 0x04;
 
 static CAPABILITY_OFFSET: usize = 0x00;
 static GENERAL_CONFIG_OFFSET: usize = 0x10;
-static GENERAL_INTERRUPT_OFFSET: usize = 0x20;
-static MAIN_COUNTER_OFFSET: usize = 0xF0;
+// static GENERAL_INTERRUPT_OFFSET: usize = 0x20;
+// static MAIN_COUNTER_OFFSET: usize = 0xF0;
 static T0_CONFIG_CAPABILITY_OFFSET: usize = 0x100;
 static T0_COMPARATOR_OFFSET: usize = 0x108;
 
diff --git a/src/device/mod.rs b/src/device/mod.rs
index 18700d0ab2894a3e56dc0a4041f94cb7356627a1..b7b9ceac67d648dc5b5e7bf3667ba6c02dda5e6d 100644
--- a/src/device/mod.rs
+++ b/src/device/mod.rs
@@ -1,6 +1,5 @@
 use paging::ActivePageTable;
 use acpi::ACPI_TABLE;
-use syscall::io::{Pio, Io};
 
 pub mod cpu;
 pub mod local_apic;
diff --git a/src/start.rs b/src/start.rs
index d7b3663c0b2c2599ade8cd20f7e387e5cf6a2865..faac4b42540e64aeab158027fd0c943d9a302e07 100644
--- a/src/start.rs
+++ b/src/start.rs
@@ -15,8 +15,6 @@ use memory;
 use paging::{self, entry, Page, VirtualAddress};
 use paging::mapper::MapperFlushAll;
 
-use stop;
-
 /// Test of zero values in BSS.
 static BSS_TEST_ZERO: usize = 0;
 /// Test of non-zero values in data.