diff --git a/Hobbes.hs b/Hobbes.hs
--- a/Hobbes.hs
+++ b/Hobbes.hs
@@ -6,12 +6,14 @@
 import System.FilePath.GlobPattern (GlobPattern, (~~))
 import System.IO
 
-import System.OSX.FSEvents
+import Filesystem.Path.CurrentOS (fromText, encodeString)
 
-import Control.Monad (forever, when)
-import Control.Exception (bracket)
+import System.FSNotify
+
+import Control.Monad (forever)
 import Control.Concurrent (threadDelay)
 
+import Data.Text (pack)
 import Data.Bits ((.&.))
 
 
@@ -31,28 +33,22 @@
 runWatcher :: FilePath -> IO ()
 runWatcher path =
   let (dir, glob) = splitFileName path
-  in bracket
-       (eventStreamCreate [dir] 1.0 True True True (handleEvent glob))
-       (\es -> eventStreamDestroy es >> hPutStrLn stderr "Bye!")
-       (const $ forever $ threadDelay 1000000)
+  in withManager $ \m -> do
+       watchTree m (fromText $ pack dir) (globModified glob) printPath
+       forever $ threadDelay 1000000
 
-handleEvent :: GlobPattern -> Event -> IO ()
-handleEvent glob evt = 
-  let fn      = takeFileName $ eventPath evt
-      isMatch = isFileChange evt && fileMatchesGlob glob fn 
-  in when isMatch $ putStrLn $ eventPath evt
+globModified :: GlobPattern -> Event -> Bool
+globModified glob evt@(Added _ _)    = matchesGlob glob evt
+globModified glob evt@(Modified _ _) = matchesGlob glob evt
+globModified _ (Removed _ _)     = False
 
+matchesGlob :: GlobPattern -> Event -> Bool
+matchesGlob glob = fileMatchesGlob glob . takeFileName . encodeString . eventPath
+
+printPath :: Event -> IO ()
+printPath = putStrLn . encodeString . eventPath 
+
 fileMatchesGlob :: GlobPattern -> FilePath -> Bool
 fileMatchesGlob []   _  = True
 fileMatchesGlob "."  _  = True
 fileMatchesGlob glob fp = fp ~~ glob
-
-isFileChange :: Event -> Bool
-isFileChange evt = not $ hasFlag eventFlagItemRemoved 
-                   && hasFlag eventFlagItemIsFile 
-                   && any hasFlag [ eventFlagItemModified
-                                  , eventFlagItemRenamed
-                                  , eventFlagItemCreated
-                                  ]
-  where flags = eventFlags evt
-        hasFlag f = flags .&. f /= 0
diff --git a/hobbes.cabal b/hobbes.cabal
--- a/hobbes.cabal
+++ b/hobbes.cabal
@@ -1,21 +1,24 @@
 name:                hobbes
-version:             0.2.1
+version:             0.2.2
 synopsis:            A small file watcher for OSX
--- description:         
+-- description:
 homepage:            http://github.com/jhickner/hobbes
 license:             BSD3
 license-file:        LICENSE
 author:              Jason Hickner
 maintainer:          jhickner@gmail.com
--- copyright:           
+-- copyright:
 category:            System
 build-type:          Simple
 cabal-version:       >=1.8
 
 executable hobbes
   main-is:             Hobbes.hs
-  -- other-modules:       
-  build-depends:       base >= 4 && < 5, 
-                       filepath ==1.3.*, 
-                       filemanip ==0.3.*, 
-                       hfsevents ==0.1.*
+  -- other-modules:
+  build-depends:       base >= 4 && < 5,
+                       filepath ==1.3.*,
+                       system-filepath >= 0.4.7,
+                       filemanip ==0.3.*,
+                       fsnotify >= 0.0.11,
+                       text >= 1.1.0.1
+
