diff --git a/Sam.pl b/Sam.pl
index d24205e23074abc5f14d83ff0326be042722abc4..a1c8612b86be69c3e42f94742371297c7f447a8a 100755
--- a/Sam.pl
+++ b/Sam.pl
@@ -2,10 +2,165 @@
 use strict;
 use warnings;
 
+use POE;
+use POE::Component::IRC;
+use DBI;
+use JSON;
 use Module::Reload;
 use FindBin;
+
 use lib "$FindBin::Bin/lib/";
-use Sam;
+use Logging;
+use commands::parser;
+
+my $log = Logging->new('STDOUT', 1);
+
+# config
+my $serveur = 'IRC.iiens.net';
+my $nick = 'Sam';
+my $port = 6667;
+my $ircname = 'nightiies';
+my $username = 'nightiies';
+my @channels = qw(#nightiies #bigphatsubwoofer);
+my $admin = 'moise';
+my $baseurl = 'http://nightiies.iiens.net/sam/';
+my %lastID;
+my %commandes_admin = ("cycle" => \&cycle);
+
+my $debug = 0;
+
+# mode debug
+if ($#ARGV + 1) {
+	@channels = qw(#hormone);
+	$nick = 'glloq';
+	$debug = 1;
+}
+
+
+local $/;
+open CONF, '<', 'sam.conf';
+my $json = <CONF>;
+my $conf = decode_json($json);
+
+
+my ($irc) = POE::Component::IRC->spawn();
+my $dbh = DBI->connect('DBI:mysql:'.$conf->{'bdd'}.';host='.$conf->{'host'}, $conf->{'user'}, $conf->{'passwd'}, {
+	    PrintError => 0,
+	    AutoCommit => 1,
+		mysql_auto_reconnect => 1
+	})
+	or die("Couldn't connect to database: ".DBI->errstr);
+
+# Evenements que le bot va gérer
+POE::Session->create(
+	inline_states => {
+        _start     => \&bot_start,
+        irc_001    => \&on_connect,
+        irc_public => \&on_speak,
+        irc_msg    => \&on_query,
+        irc_invite => \&on_invite
+	},
+);
+
+
+sub cycle
+{
+	my ($arg) = @_;
+
+	$log->info("refresh modules");
+
+    Module::Reload->check;
+
+    setConf();
+}
+
+
+sub setConf 
+{
+    commands::parser::setConf($nick, $irc, $dbh, $log, \%lastID);
+}
+
+
+## GESTION EVENTS
+
+# Au démarrage
+sub bot_start {
+	$irc->yield(register => "all");
+	$irc->yield(
+		connect => {
+			Nick     => $nick,
+			Username => $username, 
+			Ircname  => $ircname,
+			Server   => $serveur,
+			Port     => $port,
+		}
+	);
+}
+
+
+# A la connection
+sub on_connect
+{
+	my $kernel = $_[ KERNEL ];
+
+    setConf();
+    $irc->yield(privmsg => "NickServ" => "identify ".$conf->{'nickserv_pwd'}) unless ($debug);
+	$log->info('connected');
+
+	foreach (@channels) {
+		$irc->yield(join => $_);
+		$log->info("join $_");
+	}
+}
+
+# Discussion privée
+sub on_query
+{
+	my ($kernel, $user, $msg) = @_[KERNEL, ARG0, ARG2];
+	my ($nick) = split (/!/,$user);
+
+    my @fake_chan = ($nick);
+    my @args = ($kernel, $user, \@fake_chan, $msg);
+
+    my $fake_chan = \@fake_chan;
+    return if (commands::parser::exec(@args));
+
+	if ($msg =~ m/^!/ && $nick eq $admin) {
+		my $commande = ( $msg =~ m/^!([^ ]*)/ )[0]; 
+		my @params = grep {!/^\s*$/} split(/\s+/, substr($msg, length("!$commande")));
+
+		foreach (keys(%commandes_admin)) {
+			if ($commande eq $_) {
+				$commandes_admin{$_}->(@params);
+				last;
+			}
+		}
+	}
+}
+
+# Quand on m'invite, je join
+sub on_invite
+{
+	my ($kernel, $user, $chan) = @_[KERNEL, ARG0, ARG1];
+	my ($nick,$mask) = split(/!/,$user);
+
+	$log->info($nick . " m'invite sur ". $chan);
+	$irc->yield(join => $chan);
+
+    push @channels, $chan;
+}
+
+# Quand un user parle
+sub on_speak
+{
+	my ($kernel, $user, $chan, $msg) = @_[KERNEL, ARG0, ARG1, ARG2];
+    my @args = ($kernel, $user, $chan, $msg);
+
+	my ($nick,$mask) = split(/!/,$user);
+
+    commands::parser::exec(@args);
+}
 
-Sam::start();
+# Boucle des events
+$poe_kernel->run();
 exit 0;
diff --git a/lib/Sam.pm b/lib/Sam.pm
deleted file mode 100644
index 4653f4ed1710670872a49deb714c82fee70ef773..0000000000000000000000000000000000000000
--- a/lib/Sam.pm
+++ /dev/null
@@ -1,171 +0,0 @@
-package Sam;
-
-require Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(start);
-
-use strict;
-use warnings;
-
-use POE;
-use POE::Component::IRC;
-use DBI;
-use JSON;
-use Logging;
-use commands::parser;
-
-my $log = Logging->new('STDOUT', 1);
-
-# config
-my $serveur = 'IRC.iiens.net';
-my $nick = 'Sam';
-my $port = 6667;
-my $ircname = 'nightiies';
-my $username = 'nightiies';
-my @channels = qw(#nightiies #bigphatsubwoofer);
-my $admin = 'moise';
-my $baseurl = 'http://nightiies.iiens.net/sam/';
-my %lastID;
-my %commandes_admin = ("cycle" => \&cycle);
-
-my $debug = 0;
-
-# mode debug
-if ($#ARGV + 1) {
-	@channels = qw(#hormone);
-	$nick = 'glloq';
-	$debug = 1;
-}
-
-
-local $/;
-open CONF, '<', 'sam.conf';
-my $json = <CONF>;
-my $conf = decode_json($json);
-
-
-my ($irc) = POE::Component::IRC->spawn();
-my $dbh = DBI->connect('DBI:mysql:'.$conf->{'bdd'}.';host='.$conf->{'host'}, $conf->{'user'}, $conf->{'passwd'}, {
-	    PrintError => 0,
-	    AutoCommit => 1,
-		mysql_auto_reconnect => 1
-	})
-	or die("Couldn't connect to database: ".DBI->errstr);
-
-# Evenements que le bot va gérer
-POE::Session->create(
-	inline_states => {
-        _start     => \&bot_start,
-        irc_001    => \&on_connect,
-        irc_public => \&on_speak,
-        irc_msg    => \&on_query,
-        irc_invite => \&on_invite
-	},
-);
-
-
-sub cycle
-{
-	my ($arg) = @_;
-
-	$log->info("refresh modules");
-
-    Module::Reload->check;
-
-    setConf();
-}
-
-
-sub setConf 
-{
-    commands::parser::setConf($nick, $irc, $dbh, $log, \%lastID);
-}
-
-
-## GESTION EVENTS
-
-# Au démarrage
-sub bot_start {
-	$irc->yield(register => "all");
-	$irc->yield(
-		connect => {
-			Nick     => $nick,
-			Username => $username, 
-			Ircname  => $ircname,
-			Server   => $serveur,
-			Port     => $port,
-		}
-	);
-}
-
-
-# A la connection
-sub on_connect
-{
-	my $kernel = $_[ KERNEL ];
-
-    setConf();
-    $irc->yield(privmsg => "NickServ" => "identify ".$conf->{'nickserv_pwd'}) unless ($debug);
-	$log->info('connected');
-
-	foreach (@channels) {
-		$irc->yield(join => $_);
-		$log->info("join $_");
-	}
-}
-
-# Discussion privée
-sub on_query
-{
-	my ($kernel, $user, $msg) = @_[KERNEL, ARG0, ARG2];
-	my ($nick) = split (/!/,$user);
-
-    my @fake_chan = ($nick);
-    my @args = ($kernel, $user, \@fake_chan, $msg);
-
-    my $fake_chan = \@fake_chan;
-    return if (commands::parser::exec(@args));
-
-	if ($msg =~ m/^!/ && $nick eq $admin) {
-		my $commande = ( $msg =~ m/^!([^ ]*)/ )[0]; 
-		my @params = grep {!/^\s*$/} split(/\s+/, substr($msg, length("!$commande")));
-
-		foreach (keys(%commandes_admin)) {
-			if ($commande eq $_) {
-				$commandes_admin{$_}->(@params);
-				last;
-			}
-		}
-	}
-}
-
-# Quand on m'invite, je join
-sub on_invite
-{
-	my ($kernel, $user, $chan) = @_[KERNEL, ARG0, ARG1];
-	my ($nick,$mask) = split(/!/,$user);
-
-	$log->info($nick . " m'invite sur ". $chan);
-	$irc->yield(join => $chan);
-
-    push @channels, $chan;
-}
-
-# Quand un user parle
-sub on_speak
-{
-	my ($kernel, $user, $chan, $msg) = @_[KERNEL, ARG0, ARG1, ARG2];
-    my @args = ($kernel, $user, $chan, $msg);
-
-	my ($nick,$mask) = split(/!/,$user);
-
-    commands::parser::exec(@args);
-}
-
-# Boucle des events
-sub start
-{
-    $poe_kernel->run();
-}
-
-1;
diff --git a/lib/commands/parser.pm b/lib/commands/parser.pm
index ae0960a1dc5894b33589de7406ee863a19295607..7fac6c0894cb30e34c301130f5212e437f2b999a 100644
--- a/lib/commands/parser.pm
+++ b/lib/commands/parser.pm
@@ -6,7 +6,6 @@ our @EXPORT_OK = qw(exec);
 
 use strict;
 
-use FindBin;
 use lib "$FindBin::Bin/lib/";
 use commands::add;
 use commands::list;