diff --git a/lib/sessions/irc.pm b/lib/sessions/irc.pm
index 13815d0e7e0436a12dd2487a3b21cc1f1553f6a7..48ca33f7a13b485bfb676af17df1513e55e8ce20 100644
--- a/lib/sessions/irc.pm
+++ b/lib/sessions/irc.pm
@@ -14,6 +14,7 @@ use FindBin;
 
 use lib "$FindBin::Bin/lib/";
 use utils::Logging;
+use sessions::irc::later;
 use sites::parser;
 use commands::parser;
 
@@ -65,7 +66,9 @@ POE::Session->create(
         irc_invite => \&on_invite,
         irc_notice => \&on_notice,
 		_flux	   => \&flux,
-        _later     => \&later
+        _later     => sub {
+            sessions::irc::later::consume($_[ARG0], $_[ARG1])
+        }
 	},
 );
 
@@ -99,35 +102,6 @@ sub flux
 }
 
 
-sub later
-{
-	my ($nick, $id) = @_[ARG0,ARG1];
-
-	my $sth = $dbh->prepare('SELECT url, sender, title FROM playbot WHERE id = ?');
-	$log->error("Couldn't prepare querie; aborting") unless (defined $sth);
-
-	$sth->execute($id)
-		or $log->error("Couldn't finish transaction: " . $dbh->errstr);
-
-	if ($sth->rows) {
-		my @donnees = $sth->fetchrow_array;
-
-		$irc->yield(privmsg => $nick => '['.$id.'] '.$donnees[2].' | '.$donnees[1]);
-		$irc->yield(privmsg => $nick => $donnees[0]);
-    
-        # save the content in the history
-        my $sth2 = $dbh->prepare('
-            INSERT INTO playbot_chan (content, chan, sender_irc)
-            VALUES (?,?,?)');
-        $log->error("Couldn't prepare querie; aborting") unless (defined $sth2);
-        $sth2->execute($id, $nick, $nick)
-            or $log->error("Couldn't finish transaction: " . $dbh->errstr);
-
-	    $lastID{$nick} = $id;
-	}
-}
-
-
 sub cycle
 {
 	my ($arg) = @_;
@@ -144,6 +118,9 @@ sub setConf
 {
     commands::parser::setConf($irc, $dbh, $log, \%lastID);
 
+    $sessions::irc::later::irc = $irc;
+    $sessions::irc::later::log = $log;
+
     $sites::parser::irc = $irc;
     $sites::parser::log = $log;
 }
diff --git a/lib/sessions/irc/later.pm b/lib/sessions/irc/later.pm
new file mode 100644
index 0000000000000000000000000000000000000000..8db55b147f04ebbd9f3cf0cdfb374a49369438a1
--- /dev/null
+++ b/lib/sessions/irc/later.pm
@@ -0,0 +1,39 @@
+package utils::later;
+
+use lib "$FindBin::Bin/lib/";
+use utils::db;
+use utils::print;
+
+our $irc;
+our $log;
+
+sub consume
+{
+	my ($nick, $id) = @_;
+
+    my $dbh = utils::db::main_session();
+	my $sth = $dbh->prepare('SELECT url, sender, title FROM playbot WHERE id = ?');
+	$log->error("Couldn't prepare querie; aborting") unless (defined $sth);
+
+	$sth->execute($id)
+		or $log->error("Couldn't finish transaction: " . $dbh->errstr);
+
+	if ($sth->rows) {
+		my @donnees = $sth->fetchrow_array;
+
+		$irc->yield(privmsg => $nick => '['.$id.'] '.$donnees[2].' | '.$donnees[1]);
+		$irc->yield(privmsg => $nick => $donnees[0]);
+    
+        # save the content in the history
+        my $sth2 = $dbh->prepare('
+            INSERT INTO playbot_chan (content, chan, sender_irc)
+            VALUES (?,?,?)');
+        $log->error("Couldn't prepare querie; aborting") unless (defined $sth2);
+        $sth2->execute($id, $nick, $nick)
+            or $log->error("Couldn't finish transaction: " . $dbh->errstr);
+	}
+
+    $dbh->commit;
+}
+
+1;