Index: src/plugin.c
===================================================================
--- src/plugin.c	(revision 37)
+++ src/plugin.c	(working copy)
@@ -31,10 +31,10 @@
 
 static gboolean plugin_init(GstPlugin* plugin) {
     
-    if (!gst_element_register(plugin, "polypsink", GST_RANK_NONE, GST_TYPE_POLYPSINK))
+    if (!gst_element_register(plugin, "polypsink", GST_RANK_SECONDARY-1, GST_TYPE_POLYPSINK))
         return FALSE;
 
-    if (!gst_element_register(plugin, "polypsrc", GST_RANK_NONE, GST_TYPE_POLYPSRC))
+    if (!gst_element_register(plugin, "polypsrc", GST_RANK_SECONDARY-1, GST_TYPE_POLYPSRC))
         return FALSE;
 
     if (!gst_element_register(plugin, "polypmixer", GST_RANK_NONE, GST_TYPE_POLYPMIXER))
Index: src/polypsink.c
===================================================================
--- src/polypsink.c	(revision 37)
+++ src/polypsink.c	(working copy)
@@ -498,9 +498,9 @@
     }
 
     pa_threaded_mainloop_unlock(polypsink->mainloop);
-    
-    return (guint) ((t * polypsink->sample_spec.rate) / 1000000LL);
 
+    return gst_util_uint64_scale_int (t, polypsink->sample_spec.rate, 1000000LL);
+
 unlock_and_fail:
     
     pa_threaded_mainloop_unlock(polypsink->mainloop);
@@ -592,8 +592,6 @@
             gst_tag_list_get_string(l, GST_TAG_LOCATION, &location);
             gst_tag_list_get_string(l, GST_TAG_DESCRIPTION, &description);
 
-            gst_tag_list_free(l);
-
             if (title && artist)
                 t = buf = g_strdup_printf("'%s' by '%s'", title, artist);
             else if (title)
