diff --git a/src/XMonad/Config/Vanessa.hs b/src/XMonad/Config/Vanessa.hs
--- a/src/XMonad/Config/Vanessa.hs
+++ b/src/XMonad/Config/Vanessa.hs
@@ -11,12 +11,15 @@
 import XMonad.Util.Volume
 import XMonad.Util.Brightness
 import XMonad.Util.Keyboard
+import XMonad.Util.MediaKeys
 import XMonad.StackSet as W
 --Monads etc.
 import qualified Data.Map as M
 import Data.Monoid
 import Control.Monad hiding (guard)
 import Control.Monad.IO.Class
+--
+import Control.Concurrent
 
 -- | IO action of the whole thing
 vConfig :: IO ()
@@ -44,19 +47,33 @@
 myManageHook = composeAll [ className =? "Gimp"          --> doFloat
                           , resource =? "spotify"       --> doF (W.shift "5")
                           , resource =? "google-chrome" --> doF (W.shift "2")
+                          , resource =? "crx_bikioccmkafdpakkkcpdbppfkghcmihk" --> doF (W.shift "7")
                           ]
 
 -- | Custom keymaps to adjust volume, brightness, and 
 myKeys :: XConfig t -> M.Map (KeyMask, KeySym) (X ())
-myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList
-             [ ((modm, xK_Up), raiseVolume 5)
+myKeys conf@(XConfig {XMonad.modMask = modm}) = mediaKeys . M.fromList $
+             [ --volume control
+               ((modm, xK_Up), raiseVolume 5)
              , ((modm, xK_Down), lowerVolume 5)
+             , ((modm, xK_F8), toggleMute)
+             --personal (extra) media keys
+             , ((modm, xK_End), audioNext)
+             , ((modm, xK_Page_Up), audioPrev)
+             , ((modm, xK_Home), audioPlayPause)
+             --brightness
              , ((modm, xK_Left), brighten (-100))
              , ((modm, xK_Right), brighten 100)
-             , ((modm, xK_F8), toggleMute)
-             --, ((modm, xK_p), spawn "nohup yeganesh -x")
+             --program shortcuts
+             , ((modm, xK_q), spawn "spotify") 
+             , ((modm .|. shiftMask, xK_n), spawn "google-chrome --profile-directory=Default --app-id=bikioccmkafdpakkkcpdbppfkghcmihk") --open signal
+             --launch bar
+             , ((modm, xK_p), spawn "$(yeganesh -x)")
+             --screenshots
+             , ((0, xK_Print), spawn "cd ~/.screenshots && scrot")
+             --shutdown etc.
              , ((modm .|. shiftMask, xK_End), spawn "shutdown now")
-             , ((modm, xK_F12), spawn "cd ~/.screenshots && scrot")
+             --switch keyboards
              , ((modm, xK_F1), setLang def)
              , ((modm, xK_F2), setLang tibetan)
              , ((modm, xK_F3), setLang accented)
@@ -65,12 +82,10 @@
              --idea: "browse" workspaces but multiple of them/autospawn in a new one?
              --overambition:vim-like window management
 
-
 -- | Function giving keybindings to undo
 keysToRemove :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
 keysToRemove x@(XConfig {XMonad.modMask = modm}) = M.fromList
-        --[ ((modm , xK_p ), return ())
-        []
+        [ ((modm, xK_p), pure ()) ]
 
 -- | Gives a better ratio for the master pane and lets us spiral windows
 myLayout = avoidStruts $ normalPanes ||| reflectHoriz normalPanes ||| Full ||| spiral (16/9)
diff --git a/src/XMonad/Util/Keyboard.hs b/src/XMonad/Util/Keyboard.hs
--- a/src/XMonad/Util/Keyboard.hs
+++ b/src/XMonad/Util/Keyboard.hs
@@ -1,4 +1,5 @@
 -- | Allows to switch keyboard layouts 
+-- Uses the command-line utility setxkbmap. 
 module XMonad.Util.Keyboard ( KbLayout (..)
                             , showKBLayout
                             , parseKB
diff --git a/src/XMonad/Util/MediaKeys.hs b/src/XMonad/Util/MediaKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/XMonad/Util/MediaKeys.hs
@@ -0,0 +1,44 @@
+-- | Bind media keys using dbus
+-- Requires amixer to control volume. 
+module XMonad.Util.MediaKeys (-- * default keybindings
+                             mediaKeys
+                             -- * media control in the 'X' monad
+                             , audioPrev
+                             , audioNext
+                             , audioPlayPause) where
+
+--gives us media keys
+import Graphics.X11.ExtraTypes.XF86
+import Graphics.X11.Types
+--XMonad stuff
+import XMonad.Core
+import XMonad.Util.Volume
+--monads and all that
+import qualified Data.Map as M
+import Data.Monoid
+
+-- | Given your keymaps, add the media keybindings
+mediaKeys :: M.Map (KeyMask, KeySym) (X ()) -> M.Map (KeyMask, KeySym) (X ())
+mediaKeys = M.fromList . ((<>) mediaKeyList) . M.toList
+
+mediaKeyList :: [((KeyMask, KeySym), X ())]
+mediaKeyList = [ ((0, xF86XK_AudioNext), audioNext)
+               , ((0, xF86XK_AudioPrev), audioPrev)
+               , ((0, xF86XK_AudioPlay), audioPlayPause)
+               , ((0, xF86XK_AudioMute), toggleMute)
+               , ((0, xF86XK_AudioLowerVolume), lowerVolume 5) --module elsewhere? 
+               , ((0, xF86XK_AudioRaiseVolume), raiseVolume 5) 
+               ]
+
+-- | Helper function for use with dbus
+sp :: String -> X ()
+sp = spawn . ((<>) "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.")
+
+-- | Action in the 'X' monad to go to next
+audioNext      = sp "Next"
+
+-- | Action in the 'X' monad to go the previous
+audioPrev      = sp "Previous"
+
+-- | Action in the 'X' monad to play/pause
+audioPlayPause = sp "PlayPause"
diff --git a/xmonad-vanessa.cabal b/xmonad-vanessa.cabal
--- a/xmonad-vanessa.cabal
+++ b/xmonad-vanessa.cabal
@@ -1,5 +1,5 @@
 name: xmonad-vanessa
-version: 0.1.0.1
+version: 0.1.0.2
 cabal-version: >=1.10
 build-type: Simple
 license: BSD3
@@ -23,6 +23,7 @@
         XMonad.Util.Brightness
         XMonad.Util.Keyboard
         XMonad.Util.Volume
+        XMonad.Util.MediaKeys
     build-depends:
         base >=4.7 && <5,
         xmonad ==0.12.*,
@@ -30,8 +31,7 @@
         xmonad-extras >=0.12.1 && <0.13,
         containers >=0.5.7.1 && <0.6,
         process >=1.4.2.0 && <1.5,
-        X11 >=1.6.1.2 && <1.7,
-        tibetan-utils >=0.1.0.1 && <0.2
+        X11 >=1.6.1.2 && <1.7
     default-language: Haskell2010
     hs-source-dirs: src
 
@@ -39,7 +39,7 @@
     main-is: Main.hs
     build-depends:
         base >=4.9.0.0 && <4.10,
-        xmonad-vanessa >=0.1.0.1 && <0.2
+        xmonad-vanessa >=0.1.0.2 && <0.2
     default-language: Haskell2010
     hs-source-dirs: app
     ghc-options: -threaded -rtsopts -with-rtsopts=-N
@@ -48,7 +48,7 @@
     main-is: ParseKBLayout.hs
     build-depends:
         base >=4.9.0.0 && <4.10,
-        xmonad-vanessa >=0.1.0.1 && <0.2
+        xmonad-vanessa >=0.1.0.2 && <0.2
     default-language: Haskell2010
     hs-source-dirs: app
     ghc-options: -threaded -rtsopts -with-rtsopts=-N
