diff --git a/gnl/gnlfilesource.c b/gnl/gnlfilesource.c
index 53440db..3b862af 100644
--- a/gnl/gnlfilesource.c
+++ b/gnl/gnlfilesource.c
@@ -111,7 +111,7 @@ gnl_filesource_init (GnlFileSource * filesource,
 
   /* We create a bin with source and decodebin within */
   if ((decodebin =
-          gst_element_factory_make ("uridecodebin", "internal-uridecodebin"))) {
+          gst_element_factory_make ("uridecodebin34", "internal-uridecodebin"))) {
     GST_DEBUG ("Using uridecodebin");
 
     gst_bin_add (GST_BIN (filesource), decodebin);
@@ -136,11 +136,6 @@ gnl_filesource_init (GnlFileSource * filesource,
       if (!(gst_element_link (filesrc, decodebin)))
         g_warning ("Could not link the file source element to decodebin");
     }
-
-    if (decodebin) {
-      GNL_SOURCE_GET_CLASS (filesource)->control_element (
-          (GnlSource *) filesource, decodebin);
-    }
   }
 
   if (decodebin) {
diff --git a/gnl/gnlsource.c b/gnl/gnlsource.c
index 29b9c2a..8bf66d3 100644
--- a/gnl/gnlsource.c
+++ b/gnl/gnlsource.c
@@ -229,8 +229,11 @@ element_pad_added_cb (GstElement * element G_GNUC_UNUSED, GstPad * pad,
 
   GST_DEBUG_OBJECT (pad, "valid pad, about to add event probe and pad block");
 
-
-  if (!(gst_pad_set_blocked_async (pad, TRUE,
+  if (gst_pad_is_blocked (pad)) {
+    source->priv->ghostedpad = pad;
+    source->priv->pendingblock = TRUE;
+    pad_blocked_cb (pad, TRUE, source);
+  } else if (!(gst_pad_set_blocked_async (pad, TRUE,
               (GstPadBlockCallback) pad_blocked_cb, source)))
     GST_WARNING_OBJECT (source, "Couldn't set Async pad blocking");
   else {
