diff --git a/mp.cabal b/mp.cabal
--- a/mp.cabal
+++ b/mp.cabal
@@ -1,5 +1,5 @@
 name:               mp
-version:            1.1.0
+version:            1.2.0
 cabal-version:      >=1.22
 build-type:         Simple
 author:             Piotr Borek <piotrborek@op.pl>
@@ -36,7 +36,7 @@
         mtl                (>= 2.2 && < 2.3),
         random             (>= 1.1 && < 1.2),
         binary             (>= 0.8 && < 0.9),
-        network            (>= 2.6 && < 2.9),
+        network            (>= 2.6 && < 3.2),
         directory          (>= 1.3 && < 1.4),
         filepath           (>= 1.4 && < 1.5),
         utf8-string        (>= 1.0 && < 1.1),
@@ -45,13 +45,13 @@
         resourcet          (>= 1.1 && < 1.3),
         exceptions         (>= 0.8 && < 0.11),
         async              (>= 2.1 && < 2.3),
-        daemons            (>= 0.2 && < 0.3),
-        vty                (>= 5.16 && < 5.26),
-        lens               (>= 4.15 && < 4.18),
+        daemons            (>= 0.2 && < 0.4),
+        vty                (>= 5.16 && < 5.33),
+        lens               (>= 4.15 && < 4.20),
         containers         (>= 0.5 && < 0.7),
-        template-haskell   (>= 2.11 && < 2.15),
+        template-haskell   (>= 2.11 && < 2.17),
         unix               (>= 2.7 && < 2.8),
-        simple-ui          == 0.1.*
+        simple-ui          == 0.2.*
 
     other-modules:
         Mp.UI.Main
diff --git a/src/Mp/Player/GstPlayer.hs b/src/Mp/Player/GstPlayer.hs
--- a/src/Mp/Player/GstPlayer.hs
+++ b/src/Mp/Player/GstPlayer.hs
@@ -159,8 +159,9 @@
 gstPlayerPlay player file = gstPlayerAddIdle $ do
     let pipeline = gstPlayerPipeline player
     let source   = gstPlayerSource player
+    uri <- G.uriEscapeString (T.pack $ "file://" ++ file) (Just ":/") True
     void $ G.elementSetState pipeline G.StateNull
-    G.setObjectPropertyString source "uri" (Just . T.pack $ "file://" ++ file)
+    G.setObjectPropertyString source "uri" (Just uri)
     G.setObjectPropertyInt source "buffer-size" (4 * 1024 * 1024)
     void $ G.elementSetState pipeline G.StatePlaying
     return False
diff --git a/src/Mp/UI/BrowserPage.hs b/src/Mp/UI/BrowserPage.hs
--- a/src/Mp/UI/BrowserPage.hs
+++ b/src/Mp/UI/BrowserPage.hs
@@ -29,7 +29,7 @@
     browserPageNew
 ) where
 
-import           Control.Lens           (ix, makeLensesFor, (.=), (^.), (^?))
+import           Control.Lens           (ix, makeLensesFor, (^?))
 import           Control.Monad
 import           Control.Monad.IO.Class
 import           Data.List              (elemIndex, isPrefixOf, isSuffixOf,
diff --git a/src/Mp/UI/PlaylistPage.hs b/src/Mp/UI/PlaylistPage.hs
--- a/src/Mp/UI/PlaylistPage.hs
+++ b/src/Mp/UI/PlaylistPage.hs
@@ -30,7 +30,7 @@
     playlistPageUpdate
 ) where
 
-import           Control.Lens                   (ix, makeLensesFor, (.=), (^?))
+import           Control.Lens                   (ix, makeLensesFor, (^?))
 import           Control.Monad
 import           Control.Monad.IO.Class
 import           Data.List                      (isSuffixOf, sort)
diff --git a/src/Mp/UI/QuestionBar.hs b/src/Mp/UI/QuestionBar.hs
--- a/src/Mp/UI/QuestionBar.hs
+++ b/src/Mp/UI/QuestionBar.hs
@@ -29,7 +29,7 @@
     answer
 ) where
 
-import           Control.Lens              (makeLensesFor, (.=))
+import           Control.Lens              (makeLensesFor)
 import qualified Graphics.Vty              as Vty
 import           Simple.Locale.TranslateTH
 import           Simple.UI.All
diff --git a/src/Mp/UI/QueuePage.hs b/src/Mp/UI/QueuePage.hs
--- a/src/Mp/UI/QueuePage.hs
+++ b/src/Mp/UI/QueuePage.hs
@@ -28,7 +28,7 @@
     queuePageNew
 ) where
 
-import           Control.Lens        (ix, makeLensesFor, (.=), (^.), (^?))
+import           Control.Lens        (ix, makeLensesFor, (^?))
 import           Control.Monad
 import           Control.Monad.Catch
 import qualified Graphics.Vty        as Vty
diff --git a/src/Mp/Utils/Network.hs b/src/Mp/Utils/Network.hs
--- a/src/Mp/Utils/Network.hs
+++ b/src/Mp/Utils/Network.hs
@@ -35,7 +35,7 @@
 
 import Data.ByteString.UTF8 (fromString, toString)
 
-import Network.Socket hiding (send, sendTo, recv, recvFrom)
+import Network.Socket
 import Network.Socket.ByteString
 
 sendString :: MonadIO m => Socket -> String -> m ()
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,16 +1,16 @@
-resolver: lts-13.18
+resolver: lts-17.14
 packages:
 - '.'
 extra-deps:
-- gi-gst-1.0.15
-- gi-glib-2.0.16
-- gi-gobject-2.0.16
-- haskell-gi-0.21.0
-- haskell-gi-base-0.21.0
+- gi-gst-1.0.24
+- gi-glib-2.0.25
+- gi-gobject-2.0.26
+- haskell-gi-0.25.0
+- haskell-gi-base-0.25.0
 - haskell-gi-overloading-0.0
-- daemons-0.2.1
-- clock-0.7.2
-- simple-ui-0.1.2
+- daemons-0.3.0
+- clock-0.8.2
+- simple-ui-0.2.0
 - ConfigFile-1.1.4
 flags: {}
 extra-package-dbs: []
