Add keyword parser
diff --git a/src/expr.rs b/src/expr.rs
index c2310ce..10e429f 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -340,7 +340,6 @@
     use generics::parsing::lifetime;
     use ident::parsing::ident;
     use lit::parsing::lit;
-    use nom::multispace;
     use ty::parsing::ty;
 
     named!(pub expr -> Expr, do_parse!(
@@ -414,8 +413,7 @@
     ));
 
     named!(expr_box -> Expr, do_parse!(
-        punct!("box") >>
-        multispace >>
+        keyword!("box") >>
         inner: expr >>
         (Expr::Box(Box::new(inner)))
     ));
@@ -511,8 +509,7 @@
     named!(expr_lit -> Expr, map!(lit, Expr::Lit));
 
     named!(and_cast -> Ty, do_parse!(
-        punct!("as") >>
-        multispace >>
+        keyword!("as") >>
         ty: ty >>
         (ty)
     ));
@@ -520,14 +517,13 @@
     named!(and_ascription -> Ty, preceded!(punct!(":"), ty));
 
     named!(expr_if -> Expr, do_parse!(
-        punct!("if") >>
-        multispace >>
+        keyword!("if") >>
         cond: expr >>
         punct!("{") >>
         then_block: within_block >>
         punct!("}") >>
         else_block: option!(preceded!(
-            punct!("else"),
+            keyword!("else"),
             alt!(
                 expr_if
                 |
@@ -554,7 +550,7 @@
 
     named!(expr_loop -> Expr, do_parse!(
         lt: option!(terminated!(lifetime, punct!(":"))) >>
-        punct!("loop") >>
+        keyword!("loop") >>
         loop_block: block >>
         (Expr::Loop(
             Box::new(loop_block),
@@ -588,7 +584,7 @@
     ));
 
     named!(block_check_mode -> BlockCheckMode, alt!(
-        punct!("unsafe") => { |_| BlockCheckMode::Unsafe }
+        keyword!("unsafe") => { |_| BlockCheckMode::Unsafe }
         |
         epsilon!() => { |_| BlockCheckMode::Default }
     ));