diff --git a/Hsns.hs b/Hsns.hs
--- a/Hsns.hs
+++ b/Hsns.hs
@@ -29,7 +29,7 @@
     hexadecimal = h
 }
 
-hsnsVersion = "hsns: the haskell network sniffer, version 0.5"
+hsnsVersion = "hsns: the haskell network sniffer, version 0.5.1"
 
 formatData :: PacketFmt -> IO ()
 formatData pf = do
@@ -64,18 +64,20 @@
   if (version o) == "True" then (putStrLn hsnsVersion >> (exitWith ExitSuccess)) else return ()   
   if (buffered o) == "True" then hSetBuffering stdout LineBuffering else return ()
 
-  -- our variables, the interface-listing option depends on these and therefore root access
+  -- list devices
   devs <- PCap.findAllDevs
   let devnames = map (\i -> (PCap.ifName i)) devs
-  let dev      = (interface o)
-  net  <- PCap.lookupNet dev
-  spy  <- PCap.openLive dev (read $ snarflen o) (if (nopromiscuous o) == "True" then True else False) 100000
 
   if (iflist o)  == "True" then do
     putStrLn "interfaces:" 
     mapM_ (printf " -- %s\n") devnames
     exitWith ExitSuccess
    else return ()
+
+  -- variables that depend on root access
+  let dev      = (interface o)
+  net  <- PCap.lookupNet dev
+  spy  <- PCap.openLive dev (read $ snarflen o) (if (nopromiscuous o) == "True" then True else False) 100000
     
   withForeignPtr spy $ \ptr -> do
     -- set our filter, it must happen in this context as spy is
diff --git a/hsns.cabal b/hsns.cabal
--- a/hsns.cabal
+++ b/hsns.cabal
@@ -1,5 +1,5 @@
 Name:                hsns
-Version:             0.5
+Version:             0.5.1
 Description:         a network sniffer written in a purely fun language
 Synopsis:            the haskell network sniffer
 Category:            Network
