diff --git a/xmonad.hs b/xmonad.hs
index 88e4d658025dbd1de26a0d441477ce0ea70767c6..fb98077d8c575f14c53c0c05624eadf92b9ddc40 100644
--- a/xmonad.hs
+++ b/xmonad.hs
@@ -1,29 +1,42 @@
+-------------
+-- Imports --
+-------------
+
+    -- Base
 import System.IO
 import System.Exit
 import System.Posix.Env
-
 import Data.Map as M
 import Data.Char
 import Data.Maybe
-
 import Graphics.X11.ExtraTypes.XF86
 
+    -- Xmonad
 import XMonad
 import XMonad.Operations
 import XMonad.ManageHook
 import XMonad.Config.Desktop
-
 import qualified XMonad.StackSet as W
 
+    -- Actions
 import XMonad.Actions.SpawnOn
 import XMonad.Actions.CycleWS
 import XMonad.Actions.Commands
 import XMonad.Actions.DynamicWorkspaces
 import XMonad.Actions.Submap
 import XMonad.Actions.TagWindows
-import qualified XMonad.Actions.DynamicWorkspaceOrder as DO
 import XMonad.Actions.DynamicWorkspaceGroups
+import qualified XMonad.Actions.DynamicWorkspaceOrder as DO
+
+    -- Utils
+import XMonad.Util.NamedScratchpad
+import XMonad.Util.SpawnOnce
+import XMonad.Util.Run
+import XMonad.Util.EZConfig (additionalKeys)
+import XMonad.Util.NamedWindows
+import XMonad.Util.Loggers
 
+    -- Hooks
 import XMonad.Hooks.ICCCMFocus
 import XMonad.Hooks.DynamicLog  hiding (xmobar)
 import XMonad.Hooks.ManageDocks
@@ -32,16 +45,13 @@ import XMonad.Hooks.UrgencyHook
 import XMonad.Hooks.SetWMName
 import XMonad.Hooks.EwmhDesktops (ewmh)
 
-import XMonad.Util.Run
-import XMonad.Util.EZConfig (additionalKeys)
-import XMonad.Util.NamedWindows
-import XMonad.Util.Loggers
-
+    -- Prompts
 import XMonad.Prompt
 import XMonad.Prompt.Window
 import XMonad.Prompt.Layout
 import XMonad.Prompt.ConfirmPrompt
 
+    -- Layouts
 import XMonad.Layout.Named
 import XMonad.Layout.ResizableTile
 import XMonad.Layout.LayoutModifier
@@ -52,6 +62,10 @@ import XMonad.Layout.BoringWindows
 import XMonad.Layout.SubLayouts
 import XMonad.Layout.PerWorkspace
 
+--------------
+-- The main --
+--------------
+
 main = do
   putEnv "GTK_IM_MODULE=ibus"
   putEnv "XMODIFIERS=@im=ibus"
@@ -89,16 +103,17 @@ main = do
           }
     } `additionalKeys` myAdditionalKeys
 
+------------------
+-- My variables --
+------------------
 
 myStartupHook = do
-  spawn "/home/kubat/.local/bin/xbanish"
+  spawnOnce "/home/kubat/.local/bin/xbanish"
   spawn "/home/kubat/.xmonad/init.sh"
   spawn "xrdb /home/kubat/.Xresources"
-  spawn "feh --bg-scale /home/kubat/.xmonad/wallpaper &"
+  spawnOnce "feh --bg-scale /home/kubat/.xmonad/wallpaper &"
   spawn "setxkbmap kubat"
 
-
--- (windowNavigation $ subTabbed $ emptyBSP)
 myLayoutHook =
     (onWorkspace "#" (noBorders $ Full))
     ((avoidStruts $ smartBorders $ windowNavigation $ emptyBSP) |||
@@ -138,12 +153,15 @@ mySelectDisplay "l1080"     = spawn "/home/kubat/.screenlayout/lateral_1080.sh"
 mySelectDisplay "l1024"     = spawn "/home/kubat/.screenlayout/lateral_1024.sh"
 mySelectDisplay "l1280"     = spawn "/home/kubat/.screenlayout/lateral_1280.sh"
 
+-------------
+-- My keys --
+-------------
 
 myAdditionalKeys =
   [ ((mod4Mask,                     xK_Return), spawn myTerm)
   , ((mod4Mask .|. shiftMask,       xK_Return), spawn myOtherTerm)
 
--- Apps
+ -- Apps
   , ((mod4Mask,                     xK_a),      submap . M.fromList $
     [ ((0, xK_p),                               spawn "firefox --private-window")
     , ((0, xK_w),                               spawn "firefox")
@@ -153,24 +171,24 @@ myAdditionalKeys =
     , ((0, xK_Return),                          spawn myTerm)
     ])
 
--- Workspace group
+ -- Workspace group
   , ((mod4Mask,                     xK_c),      submap . M.fromList $
     [ ((0, xK_a),                               promptWSGroupAdd    myXPConfig "Add group: ")
     , ((0, xK_g),                               promptWSGroupView   myXPConfig "Goto group: ")
     , ((0, xK_d),                               promptWSGroupForget myXPConfig "Forget group: ")
     ])
 
--- Tags
+ -- Tags
   , ((mod4Mask,                     xK_t),      submap . M.fromList $
     [ ((0, xK_a),                               tagPrompt myXPConfig (\s -> withFocused (addTag s)))
     , ((0, xK_d),                               tagDelPrompt myXPConfig)
     , ((0, xK_g),                               tagPrompt myXPConfig (\s -> withTaggedGlobalP s shiftHere))
     ])
 
--- Passwords
+ -- Passwords
   , ((mod4Mask,                     xK_p),      spawn "/home/kubat/.local/bin/passmenu -h 18")
 
--- Utility
+ -- Utility
   , ((mod4Mask,                     xK_d),      spawn "/home/kubat/.local/bin/dmenu_run -h 18")
   , ((mod4Mask,                     xK_b),      sendMessage ToggleStruts)
   , ((mod4Mask,                     xK_F1),     spawn "i3lock -e -u -t -i /home/kubat/.xmonad/lock")
@@ -180,7 +198,7 @@ myAdditionalKeys =
   , ((mod4Mask,                     xK_F8),     mkXPrompt (MyPrompt "display") myXPConfig (mkComplFunFromList' ["single", "duplicate", "l1080", "l1024", "l1280"]) $ mySelectDisplay)
   , ((mod4Mask .|. shiftMask,       xK_c),      kill)
 
--- Workspaces
+ -- Workspaces
   , ((mod4Mask .|. shiftMask,       xK_Tab),    focusDown)
   , ((mod4Mask .|. controlMask,     xK_space),  withFocused $ windows . W.sink)
 
@@ -194,10 +212,10 @@ myAdditionalKeys =
   , ((mod4Mask,                     xK_exclam), nextScreen)
   , ((mod4Mask .|. shiftMask,       xK_exclam), shiftNextScreen)
 
--- Layout control
+ -- Layout control
   , ((mod4Mask,                     xK_l),      layoutPrompt myXPConfig)
 
--- Sublayout
+ -- Sublayout
   , ((mod4Mask,                     xK_z),      submap . M.fromList $
     [ ((0, xK_Up),                              sendMessage $ pullGroup U)
     , ((0, xK_Down),                            sendMessage $ pullGroup D)
@@ -207,7 +225,7 @@ myAdditionalKeys =
     , ((0, xK_u),                               withFocused (sendMessage . UnMerge))
     ])
 
--- Control for the bsp layout
+ -- Control for the bsp layout
   , ((mod4Mask .|. shiftMask,       xK_8),      do { sendMessage $ ExpandTowards U ; sendMessage (IncMasterN 1)     })
   , ((mod4Mask .|. shiftMask,       xK_6),      do { sendMessage $ ExpandTowards R ; sendMessage Expand             })
   , ((mod4Mask .|. shiftMask,       xK_2),      do { sendMessage $ ExpandTowards D ; sendMessage (IncMasterN (-1))  })
@@ -226,7 +244,7 @@ myAdditionalKeys =
   , ((mod4Mask,                     xK_r),      sendMessage Rotate)
   , ((mod4Mask,                     xK_s),      sendMessage XMonad.Layout.BinarySpacePartition.Swap)
 
--- Dynamic workspaces and workspace control
+ -- Dynamic workspaces and workspace control
   , ((mod4Mask,                     xK_m),      selectWorkspace myXPConfig)
   , ((mod4Mask,                     xK_w),      submap . M.fromList $
     [ ((0, xK_BackSpace),                       removeEmptyWorkspace)
@@ -234,12 +252,12 @@ myAdditionalKeys =
     , ((0, xK_r),                               renameWorkspace myXPConfig)
     ])
 
--- Volume, with pulseaudio
+ -- Volume, with pulseaudio
   , ((mod4Mask,                     xK_F11),    spawn "pavolume voldown 5")
   , ((mod4Mask,                     xK_F12),    spawn "pavolume volup 5")
   , ((mod4Mask,                     xK_F10),    spawn "pavolume mutetoggle")
 
--- MPC
+ -- MPC
   , ((mod4Mask .|. mod1Mask,        xK_n),      spawn "mpc next")
   , ((mod4Mask .|. mod1Mask,        xK_p),      spawn "mpc prev")
   , ((mod4Mask .|. mod1Mask,        xK_s),      spawn "mpc stop")
@@ -247,7 +265,7 @@ myAdditionalKeys =
   , ((mod4Mask .|. mod1Mask,        xK_F11),    spawn "mpc volume -5")
   , ((mod4Mask .|. mod1Mask,        xK_F12),    spawn "mpc volume +5")
 
--- Light
+ -- Light
   , ((mod4Mask,                     xK_F5),     spawn "lux -s 10%")
   , ((mod4Mask,                     xK_F6),     spawn "lux -a 10%")
   , ((mod4Mask,                     xK_F3),     spawn "asus-kbd-backlight down")