diff --git a/opentrafficshaper/plugins/configmanager.pm b/opentrafficshaper/plugins/configmanager.pm
new file mode 100644
index 0000000000000000000000000000000000000000..4f641c399662f4fcd672178ba612a28aa54afca6
--- /dev/null
+++ b/opentrafficshaper/plugins/configmanager.pm
@@ -0,0 +1,118 @@
+# OpenTrafficShaper configuration manager
+# Copyright (C) 2007-2013, AllWorldIT
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+
+package opentrafficshaper::plugins::configmanager;
+
+use strict;
+use warnings;
+
+
+use POE;
+
+use opentrafficshaper::logger;
+
+
+
+# Exporter stuff
+require Exporter;
+our (@ISA,@EXPORT,@EXPORT_OK);
+@ISA = qw(Exporter);
+@EXPORT = qw(
+);
+@EXPORT_OK = qw(
+);
+
+use constant {
+	VERSION => '0.0.1',
+};
+
+
+# Plugin info
+our $pluginInfo = {
+	Name => "Config Manager",
+	Version => VERSION,
+	
+	Init => \&init,
+};
+
+
+# Copy of system globals
+my $globals;
+my $logger;
+
+
+# Initialize plugin
+sub init
+{
+	$globals = shift;
+
+
+	# Setup our environment
+	$logger = $globals->{'logger'};
+
+
+	# This is our configuration processing session
+	POE::Session->create(
+		inline_states => {
+			_start => \&session_init,
+			tick => \&session_tick,
+			process_change => \&process_change,
+		}
+	);
+
+	$logger->log(LOG_NOTICE,"[CONFIGMANAGER] OpenTrafficShaper Config Manager v".VERSION." - Copyright (c) 2013, AllWorldIT")
+}
+
+
+
+# Initialize config manager
+sub session_init {
+	my $kernel = $_[KERNEL];
+
+
+	# Set our alias
+	$kernel->alias_set("configmanager");
+
+	# Set delay on config updates
+	$kernel->delay(tick => 5);
+}
+
+
+# Time ticker for processing changes
+sub session_tick {
+	my $kernel = $_[KERNEL];
+
+
+	print STDERR "tick at ", time(), ":  users = ". (keys %{$globals->{'users'}})  ."\n";
+
+	# Reset tick
+	$kernel->delay(tick => 5);
+};
+
+
+# Read event for server
+sub process_change {
+	my ($kernel, $user) = @_[KERNEL, ARG0];
+
+	print STDERR "We were asked to process an update for $user->{'Username'}\n";
+}
+
+
+
+1;
+# vim: ts=4
diff --git a/opentrafficshaperd b/opentrafficshaperd
index 46ef652a12a500e3c8f99ce63f5f4111b0418bb0..949f7ddbe70bb67cd4b0280805c02899c6556ee0 100755
--- a/opentrafficshaperd
+++ b/opentrafficshaperd
@@ -42,35 +42,13 @@ my $globals;
 my $logger = new opentrafficshaper::logger;
 
 
-
-# Process basically starts here
+#
+# MAIN
+#
 $logger->log(LOG_NOTICE,"[MAIN] OpenTrafficShaper v".VERSION." - Copyright (c) 2007-2013, AllWorldIT");
 parseCfgCmdLine();
 init();
 
-
-
-
-# This is our configuration processing session
-# TODO: Current just a trigger
-POE::Session->create(
-  inline_states => {
-	_start => sub {
-	  $_[KERNEL]->delay(tick => 5);
-	},
-
-	tick => sub {
-	  print STDERR "tick at ", time(), ":  users = ". (keys %{$globals->{'users'}})  ."\n";
-	  $_[KERNEL]->delay(tick => 5);
-	},
-  }
-);
-
-
-
-#
-# MAIN
-#
 $logger->log(LOG_NOTICE,"[MAIN] Starting...");
 POE::Kernel->run();
 exit;
@@ -250,6 +228,19 @@ sub init
 	$globals->{'radius'}->{'dictionary'} = $dict;
 
 
+	# Core configuration manager
+	$logger->log(LOG_INFO,"[MAIN] Initializing config manager...");
+	my $res = eval("
+		use opentrafficshaper::plugins::configmanager;
+		plugin_register(\$globals,\"configmanager\",\$opentrafficshaper::plugins::configmanager::pluginInfo);
+	");
+	if ($@ || (defined($res) && $res != 0)) {
+		$logger->log(LOG_WARN,"[MAIN] Error loading config manager, things WILL BREAK! ($@)");
+	} else {
+		$logger->log(LOG_DEBUG,"[MAIN] Config manager initialized.");
+	}
+	
+
 	# Load plugins
 	$logger->log(LOG_INFO,"[MAIN] Initializing plugins...");
 	foreach my $plugin (@{$globals->{'config'}->{'plugin_list'}}) {
@@ -259,13 +250,14 @@ sub init
 			plugin_register(\$globals,\"${plugin}\",\$opentrafficshaper::plugins::${plugin}::pluginInfo);
 		");
 		if ($@ || (defined($res) && $res != 0)) {
-			$logger->log(LOG_WARN,"[MAIN] Error loading plugin $plugin ($@)");
+			$logger->log(LOG_WARN,"[MAIN] Error loading plugin '$plugin' ($@)");
 		} else {
 			$logger->log(LOG_DEBUG,"[MAIN] Plugin '$plugin' loaded.");
 		}
 	}
 	$logger->log(LOG_INFO,"[MAIN] Plugins initialized.");
 }
+
 # Register plugin info
 sub plugin_register {
 	my ($globals,$plugin,$info) = @_;
@@ -279,7 +271,7 @@ sub plugin_register {
 
 	# Set real module name & save
 	$info->{'Plugin'} = $plugin;
-#	push(@{$logger->{'module_list'}},$info);
+	push(@{$globals->{'plugins'}},$info);
 
 	# If we should, init the module
 	if (defined($info->{'Init'})) {